# Doothemes > Every published document, product and page, concatenated from the same source the > website renders. > Index: https://doothemes.com/llms.txt # Affiliate Program > The Doothemes Affiliate Program is an exclusive, enrollment-based program available only to our verified customers. If you already use our products and love them, why not get rewarded every time you recommend them? Source: https://doothemes.com/docs/affiliates --- ## Why Join? Earn recurring income by recommending the products you already know and trust. ### Exclusive by Design This is a **closed program**. Enrollment is open exclusively to verified Doothemes customers. That means you'll be part of a trusted community of affiliates who genuinely know and use our products, and your recommendations will carry real credibility. > Learn about all the [requirements](https://doothemes.com/docs/affiliates/requirements) ### Recurring Commissions Unlike one-time payout programs, our commissions are **recurring**. Every time one of your referred customers makes a purchase — whether it's their first order, a renewal, or a brand-new product — **you earn a commission. Every single time. For life.** Refer once, earn continuously. ### Dynamic Commissions Our commission rates are **dynamic, not fixed**. Your earnings can grow based on your performance, reaching **up to 8% per sale**. The more value you bring, the more you earn. ### Products That Sell Themselves You'll be promoting professional products and services you already use: premium themes, plugins, and custom solutions built for WordPress, Laravel, CodeIgniter, and PHP projects. Recommending quality is easy. --- ## How It Works 1. **Enroll** — Complete your enrollment as a verified Doothemes customer. 2. **Get Verified** — Our team confirms your customer status and activates your affiliate account. 3. **Share Your Link** — Receive your unique referral link and start recommending our products and services. 4. **Earn Recurring Commissions** — Get paid every time your referrals make a purchase — today, next month, and for years to come. ## Commission Structure :::note Program at a glance - [x] **Commission type** — Dynamic (performance-based) - [x] **Maximum rate** — Up to 8% per sale - [x] **Recurrence** — Earn on every purchase your referrals make, forever - [x] **Eligible products** — All Doothemes products and services ::: > **What does "dynamic" mean?** Your commission rate isn't locked in. It adjusts based on factors like your sales volume and performance, giving you room to grow your earnings over time — up to a maximum of 8%. --- ## Who Can Join? To keep the program exclusive and high-quality, enrollment requires that you: - [x] Be a **verified Doothemes customer** with an active purchase history. - [x] Have a genuine interest in recommending our products and services. - [x] Agree to the program's [Terms & Conditions](https://doothemes.com/docs/affiliates/terms-conditions). > **Not a customer yet?** Explore our products first — once you're a verified customer, you'll be eligible to enroll. > Admission by **invitation** is also possible — initiated only and exclusively by Doothemes, at its sole discretion. Invitations cannot be requested. Learn more in [Invited Affiliates](https://doothemes.com/docs/affiliates/invited). --- ## Ready to Start Earning? Turn your recommendations into a steady stream of income. **[Enroll Now →](https://doothemes.com/account/affiliates)** --- ## Rules and legality - [x] [Terms & Conditions](https://doothemes.com/docs/affiliates/terms-conditions) - [x] [Affiliate Disclaimer](https://doothemes.com/docs/affiliates/disclaimer) - [x] [Privacy Policy](https://doothemes.com/docs/affiliates/privacy-policy) - [x] [Cookie & Tracking Policy](https://doothemes.com/docs/affiliates/cookie-tracking-policy) - [x] [Anti-SPAM Policy](https://doothemes.com/docs/affiliates/anti-spam-policy) - [x] [Program Modification & Termination](https://doothemes.com/docs/affiliates/program-modification-termination) # Affiliate Disclaimer > This disclaimer defines the boundaries of the relationship between Doothemes and its affiliates. By enrolling in the program, you acknowledge and accept every point on this page Source: https://doothemes.com/docs/affiliates/disclaimer --- ## 1. Independent Relationship Affiliates are **independent partners**. Participation in the program does not create any employment, agency, partnership, or legal representation relationship with Doothemes. An affiliate is not an employee, agent, or representative of Doothemes, and has **no authority to act, negotiate, or make commitments on behalf of the company** under any circumstance. --- ## 2. Opinions and Statements Are the Affiliate's Own Everything an affiliate says, writes, or publishes — reviews, videos, posts, tutorials, recommendations — represents **their own personal opinion**, not the official position of Doothemes. Doothemes is **not responsible for promises, guarantees, offers, or claims made by affiliates**. The only valid information about our products, services, pricing, and policies is the one published through official Doothemes channels and documentation. --- ## 3. Legal Compliance Is the Affiliate's Responsibility Each affiliate is solely responsible for complying with the laws and regulations of their jurisdiction, including but not limited to: - **Affiliate disclosure requirements** — such as FTC guidelines in the United States and their equivalents elsewhere. You must disclose your affiliate relationship where the law requires it. - **Anti-SPAM laws** — in addition to our own [Anti-SPAM Policy](https://doothemes.com/docs/affiliates/anti-spam-policy). - **Data protection and privacy regulations.** - **Advertising and consumer protection laws.** Ignorance of the law does not transfer responsibility to Doothemes. --- ## 4. Taxes Affiliates are **fully responsible for declaring and paying taxes** on their earnings according to the laws of their country or jurisdiction. This applies to all payout methods, including cryptocurrency payments (Bitcoin). Doothemes does not withhold taxes, issue tax documents on your behalf, or provide tax advice. --- ## 5. Indemnification If an affiliate's promotional activity causes damages, legal claims, or complaints from third parties, **the responsibility falls entirely on the affiliate**, not on Doothemes. The affiliate agrees to indemnify and hold Doothemes harmless from any claim, loss, or expense arising from their conduct, their content, or their promotional methods. --- ## 6. No Income Guarantee Commissions are **dynamic and depend entirely on performance**. Participation in the program does not guarantee earnings of any amount. Any income figures, examples, or projections found in our documentation are illustrative only — they are not promises of results. --- ## 7. Right of Termination Doothemes reserves the right to: - **Terminate an affiliate's participation** in the program for violations of its policies — including, but not limited to, the [Anti-SPAM Policy](https://doothemes.com/docs/affiliates/anti-spam-policy), the program [Requirements](https://doothemes.com/docs/affiliates/requirements), and this disclaimer. - **Modify or terminate the program** itself, with prior notice to affiliates. Termination for policy violations may include the consequences described in the corresponding policy pages, such as forfeiture of funds and release of referred customers. # Anti-SPAM Policy > SPAM has no place in this program. Our rule on this matter is drastic, and the punishment is severe. This page explains exactly what happens when SPAM is involved — read it carefully before promoting. Source: https://doothemes.com/docs/affiliates/anti-spam-policy --- ## Fraud Makes No Sense Here Think about it: **we pay for sales, not for clicks, impressions, or leads.** Flooding inboxes, forums, or social media with unsolicited messages does not generate real sales — it only generates complaints, damages the Doothemes brand, and hurts the reputation of every honest affiliate in the program. Any fraudulent method is pointless by design. Our goal is simple: **discourage any practice involving SPAM, completely.** --- ## What We Consider SPAM Any **unsolicited message** promoting your referral link, including: - Mass emails sent without the recipient's consent. - Unsolicited direct messages on social media or messaging platforms. - Comment SPAM on blogs, forums, or communities. - Any automated or bulk distribution of your link to people who never asked for it. --- ## How We Enforce It Every complaint of **"unsolicited message"** is examined carefully. If the complaint is confirmed, we proceed immediately with: 1. **Cancellation of the affiliate account.** Your participation in the program ends. 2. **All funds become inaccessible.** Pending, approved, and unpaid balances are forfeited. 3. **All your referred customers are released.** Every customer linked to your account is unlinked — and with them, all your recurring commissions, forever. There are no warnings and no second chances on this matter. --- ## Do the Math If you want to put it in numbers, the loss is substantial: - Your entire accumulated balance — gone. - Every referred customer you ever earned — released. - Every future recurring commission those customers would have generated for years — gone with them. One SPAM campaign can erase the value of your entire history as an affiliate. It is, by far, the most expensive mistake you can make in this program. --- ## The Right Way SPAM is simply **not the way we want to acquire customers**. This program was built on genuine recommendations from real customers: content, tutorials, honest reviews, and direct recommendations to people who actually want to hear them. That is what converts — and what gets rewarded. # Cancellation of commissions > Sometimes we must cancel commissions that were already approved — and even already paid. When that happens, we need to recover those funds, and the responsibility is shared with the affiliate. We all win together — but sometimes, we also lose together. Source: https://doothemes.com/docs/affiliates/cancellation-of-commissions --- ## Why Does This Happen? Even after an order passes validation, it can later be reversed by: - **Late disputes** — claims opened long after the order was approved. - **Chargebacks** — the cardholder reverses the payment through their bank. - **Credit card fraud** — purchases made with stolen or unauthorized cards. Our **[no-refund policy](https://doothemes.com/p/refund-policy)** protects us up to a certain point, but there are cases where we are forced to take responsibility for chargebacks. We have a **dedicated dispute team** that fights every claim. However, sometimes that is not enough to preserve the funds, and we are forced into a **mandatory refund — plus dispute fees and chargeback surcharges** on top of the lost sale. --- ## What Happens to the Affected Commissions? It depends on the status of the commission at the time of the reversal: - **Pending or Approved commissions** are simply cancelled and moved to Rejected. - **Paid commissions** cannot be undone — the money is already in your hands. In this case, the amount is **deducted from your current or future commissions**. In other words: if a paid commission is affected, the recovery is applied as a **negative adjustment against your balance**, and it is settled automatically as new commissions come in. --- ## Our Commitment: Fund Preservation Let this be clear: - **We will always dispute every claim as far as we are allowed.** Our team fights for every order before accepting any loss. - The goal is always the **preservation of funds** — yours and ours. - But when a loss is unavoidable, **the responsibility is shared**. The commission generated by a reversed order cannot be kept, just as we cannot keep the sale. This is what keeps the program fair and sustainable for everyone. # Commission Rate Renegotiation > Your commission rate is dynamic — and negotiable. If your results outgrow your current rate, you have the right to request a review. Source: https://doothemes.com/docs/affiliates/rate-renegotiation --- ## Who Can Initiate the Process? **Any affiliate can initiate a renegotiation** if they consider that: - They are **actively benefiting the program** — bringing in consistent sales, quality referrals, and real value, **and** - Their **current commission rate does not reflect their referral volume** — the earnings no longer match the results they deliver. If both apply to you, you are in a legitimate position to start the process. You don't need an invitation — the request starts with you. --- ## How to Start the Renegotiation 1. **Open a rate review request** from your affiliate dashboard (or contact affiliate support). 2. **Present your case** — describe why you consider your current rate is below your contribution: referral volume, sales generated, growth over time. 3. **Submit the request** — our team receives it along with your full performance history. --- ## What We Evaluate Your request is reviewed against objective performance data: - [x] **Referral volume** — Total number of referred customers linked to your account. - [x] **Sales generated** — Total and recurring revenue produced by your referrals. - [x] **Consistency** — Sustained activity over time, not isolated peaks. - [x] **Referral quality** — Low refund/rejection rates on your referred orders. --- ## Possible Outcomes - **Rate increased** — your new percentage applies to all future commissions, up to the program maximum of **8%**. - **Rate maintained** — your current rate stays, with clear feedback on what to improve to qualify for an increase. A renegotiation request **never lowers your rate** — the worst outcome is staying where you are. --- ## Good to Know - The **8% maximum** applies to all affiliates — no exceptions. - You can submit a new request after **90 days** if the previous one didn't result in an increase. - Your negotiating position is your data: the stronger and more consistent your numbers, the stronger your case. # Commission Validation Process > Every commission is born with the status Pending. Before it can become Approved, the order behind it must pass through our validation process. This page explains how orders are processed, what we verify, and how long it takes. Source: https://doothemes.com/docs/affiliates/commission-validation-process --- ## How Orders Are Processed All orders in our system are **processed automatically**. We accept and process payments through: - **Cryptocurrencies (BTC)** - **PayPal** - **Mercado Pago** When a referred customer completes a purchase, the order is registered instantly and the corresponding commission is created with the status **Pending** — no manual steps involved. --- ## Why Do Commissions Stay Pending? The order is processed automatically, but the commission is not approved immediately. The Pending period exists for one reason: **securing the payment behind the order**. Validation is the assurance process for the payments registered in our system. It confirms that: - The payment is **real, complete, and the funds are accessible**. - The order is **not fraudulent** and carries no reversal risk. - The referral is **legitimate** — correctly attributed, not a self-referral, and free of prohibited practices. --- ## How Long Does Validation Take? A commission can remain Pending for **up to 30 days**. However, that is the maximum — not the rule. **Our goal is to approve every commission as soon as possible.** As soon as the payment behind an order is confirmed as secure, the commission moves to Approved. The actual time depends on the payment method and the risk profile of each order: some payments are secured within hours, others need more time before the funds can be considered safe. --- ## Possible Outcomes - **Approved** — The payment was secured and the order passed every check. The commission is confirmed and added to your available balance. - **Rejected** — The order failed validation or the funds are not accessible. The commission is cancelled. Keep in mind that validation reduces risk, but does not eliminate it completely: late disputes and chargebacks can still reverse an order after approval. Those exceptional cases are covered in [Cancellation of Commissions](https://doothemes.com/docs/affiliates/cancellation-of-commissions). --- ## Nothing Is Required From You The entire process is automatic. You can follow the status of every commission in real time from your [affiliate dashboard](https://doothemes.com/account/affiliates) — from Pending to Approved, and finally to Paid. # Commissions > Everything you need to know about how commissions work in the Doothemes Affiliate Program. Source: https://doothemes.com/docs/affiliates/commissions --- ## What Is a Commission? A commission is the **monetary reward you earn** when a customer referred by you completes a purchase of any Doothemes product or service. It is calculated as a **percentage of the order total** and credited to your affiliate balance. Since our program is recurring, you don't just earn on the first sale — **every purchase your referred customers make generates a new commission for you.** --- ## How Is a Commission Generated? A commission is created automatically when this flow completes: 1. **Click** — A user visits Doothemes through your referral link. 2. **Sign Up** — The user creates an account and verifies it. 3. **Purchase** — That user completes an order (or an already-linked referred customer makes a new purchase: renewal, upgrade, or new product). 4. **Registration** — The system attributes the sale to your account and creates the commission with the status **Pending**. 5. **Validation** — The order goes through our validation process (payment confirmation, fraud checks, refund window). > Once a referred customer is linked to your account, **all their future purchases generate commissions automatically** — no link or cookie needed. --- ## Dynamic Commission Percentage Commissions are **not fixed** — your percentage is dynamic and can reach **up to 8% per sale**. Your rate is determined by your performance as an affiliate: the volume and consistency of sales you generate. This means: - Better performance → higher percentage - Lower activity → your rate may adjust downward - The **8% maximum** is reserved for top-performing affiliates Your current rate is always visible in your affiliate dashboard. --- ## Renegotiating Your Commission Percentage Your percentage is **not set in stone**. Affiliates with strong, consistent results are in a position to **renegotiate their commission rate** directly with our team. - Demonstrate sustained sales volume and quality referrals - Request a rate review through your affiliate dashboard or affiliate support - Our team evaluates your performance history and may adjust your percentage — always up to the program maximum of **8%** The better your track record, the stronger your negotiating position. --- ## Commission Statuses Every commission moves through a defined lifecycle: - [x] **Pending** - The default status when a commission is created. The order is still going through validation. - [x] **Approved** - The order has successfully passed all validation checks — the commission is confirmed and awaiting payout. - [x] **Rejected** - The order did not pass validation (refund, chargeback, fraud) or the funds are not accessible. The commission is cancelled. - [x] **Paid** - The commission has been paid out to your account. The cycle is complete. > The approval process for a commission can take up to 30 days. ```commission_flow Pending ──► Approved ──► Paid │ └──────► Rejected ``` You can track the status of every commission in real time from your affiliate dashboard. # Cookie & Tracking Policy > This policy describes exactly how referral tracking works: when the affiliate cookie is created, when it ends, and how the referral relationship becomes permanent. Read it carefully — attribution disputes are resolved by what is written here. Source: https://doothemes.com/docs/affiliates/cookie-tracking-policy --- ## 1. How Tracking Works When a user visits Doothemes through your referral link, our system places a **tracking cookie** in their browser. That cookie identifies you as the potential referrer of that user. --- ## 2. The Cookie Ends at Account Registration This is the central rule of our tracking, and we want it to be absolutely clear: **The affiliate cookie terminates the moment the referred user completes the registration of their account.** At that exact moment, two things happen: 1. **The cookie has fulfilled its purpose and expires.** It is no longer needed, read, or considered for anything. 2. **The referral relationship is recorded permanently in our system**, server-side, tied to the referred user's account — not to their browser, their device, or any cookie. From registration onward, attribution no longer depends on tracking technology of any kind. It is a fixed record in our database. --- ## 3. What This Guarantees You Because the referral is consolidated at registration and stored server-side: - **No cookie can overwrite your referral.** Once your referred user registers, other affiliates' links, new cookies, cleared browsers, or different devices change nothing. - **The referred customer keeps you as their referrer forever** and cannot adopt a new referrer, as established in [Recurring Commissions](https://doothemes.com/docs/affiliates/recurring-commissions). - **Every purchase that customer makes — from any device, at any time — is attributed to you automatically.** No cookie required, ever again. The cookie's only job is to carry the referral from the click to the registration. After that, the system takes over — permanently. --- ## 4. Before Registration While the referral is still in the cookie stage — that is, before the user registers — standard cookie limitations apply: - If the user **clears their cookies** or switches devices before registering, the referral cannot be attributed. - If the user clicks **multiple affiliate links** before registering, the attribution follows the **last valid click** prior to registration. - Cookies blocked by the user's browser or extensions cannot be placed, and no attribution is possible without them. This is precisely why our model consolidates attribution at registration: to reduce the fragile, cookie-dependent window to the minimum possible. --- ## 5. Tampering Is a Violation Any attempt to manipulate tracking — cookie stuffing, forced clicks, scripts that place cookies without a genuine user click, or interference with another affiliate's attribution — is a serious violation of the [Terms & Conditions](https://doothemes.com/docs/affiliates/terms-conditions), sanctioned with termination, forfeiture of funds, and release of referred customers. --- ## 6. User Consent The tracking cookie is used exclusively for referral attribution. Its use is disclosed to visitors in accordance with applicable cookie-consent regulations, and it does not collect personal data beyond what is necessary to attribute the referral. --- This policy is part of the Program's [Terms & Conditions](https://doothemes.com/docs/affiliates/terms-conditions). # Invited Affiliates > The Program has two doors — and both are controlled by Doothemes. This page explains the second one: admission by invitation. Source: https://doothemes.com/docs/affiliates/invited --- ## Two Ways Into the Program 1. **Enrollment** — the standard path, open to verified Doothemes customers who meet the [Requirements](https://doothemes.com/docs/affiliates/requirements). It is initiated by the customer. 2. **Invitation** — an exceptional path, initiated **only and exclusively by Doothemes**, at its sole discretion. The Program remains closed. An invitation does not open the Program to the public — it is Doothemes choosing, case by case, who else deserves a place in it. ## What an Invitation Means The verified-customer requirement exists to guarantee three things: credibility, quality, and trust. An invitation covers those same guarantees by a different route: **Doothemes verifies the invitee directly and vouches for them.** We extend invitations to people whose work and reputation we already know — for example: - Influencers and content creators in the WordPress, Laravel, CodeIgniter, and PHP ecosystem. - Agencies and freelancers who implement solutions for their clients. - Educators and community leaders whose recommendations carry real weight. ## Invitations Cannot Be Requested This is the rule that keeps the door from becoming a back door: **There is no form, no application, and no way to request an invitation.** Any request for an invitation will simply be redirected to the standard path: become a verified customer and enroll. If you received an invitation, it is because Doothemes reached out to you — never the other way around. ## Product Knowledge Is Not Optional Our founding principle does not bend: **only those who know our products should recommend them.** For that reason, invitations may include **courtesy access to our products**, so the invited affiliate becomes a real user before promoting. The invitation changes how product knowledge is acquired — it never exempts anyone from having it. ## Same Rules, Same Consequences An invited affiliate is an affiliate like any other. From the moment they accept the invitation: - The full [Terms & Conditions](https://doothemes.com/docs/terms-conditions) apply, without exception. - All policies apply: [Anti-SPAM](https://doothemes.com/docs/affiliates/anti-spam-policy), [Cookie & Tracking](https://doothemes.com/docs/affiliates/cookie-tracking-policy), [Cancellation of Commissions](https://doothemes.com/docs/affiliates/cancellation-of-commissions), and every other Program rule. - The consequences for violations are identical: termination, forfeiture of funds, and release of referred customers. There are no privileged affiliates in this Program — only two ways of entering it. ## Revocation As with any affiliate, Doothemes reserves the entire right to revoke an invitation or terminate an invited affiliate at any time, under clause 11 of the [Terms & Conditions](https://doothemes.com/docs/terms-conditions#11-termination-of-the-affiliate). # Privacy Policy > This policy explains what data we collect from affiliates, why we collect it, how we protect it, and with whom it is shared. Your privacy matters — and so does the security of the funds and referral relationships that depend on this data. Source: https://doothemes.com/docs/affiliates/privacy-policy --- ## 1. Data We Collect To operate the Program we collect and process: - **Identity data** — your real, full name, as required for enrollment. - **Contact data** — your email address, used for account notifications and Program communications. - **Payout data** — the details of your chosen payment method: PayPal account, Bitcoin wallet address, or, in Peru, your Yape or Plin number and interbank CCI code. - **Promotion data** — the channels you declared during enrollment (website, social media, client work, and similar). - **Performance data** — clicks, referrals, linked customers, generated commissions, balances, and withdrawal history. - **Technical data** — the tracking information described in the [Cookie & Tracking Policy](https://doothemes.com/docs/affiliates/cookie-tracking-policy). We collect **only what the Program needs to operate**. Nothing more. --- ## 2. What We Use It For - To verify your identity and your status as a verified customer. - To attribute referrals and calculate your commissions correctly. - To process your withdrawals through the payment method you chose. - To communicate Program matters: statuses, payments, policy updates. - To investigate complaints, fraud, SPAM reports, and policy violations. - To comply with legal, accounting, and anti-fraud obligations. **We do not sell affiliate data. We do not rent it. We do not share it for third-party marketing. Ever.** --- ## 3. Who We Share It With Your data is shared only with the parties strictly necessary to operate the Program: - **Payment processors** — PayPal, Mercado Pago, and the networks involved in Bitcoin, Yape, Plin, or interbank transfers, solely to execute your withdrawals. - **Legal or tax authorities** — only when a valid legal requirement obliges us to. No other third party receives your personal data. --- ## 4. How We Protect It - Payout details and personal data are stored with access restricted to authorized personnel only. - Communications with our platform are encrypted in transit. - Withdrawal requests are validated against your registered profile — this is why requests with incorrect or incomplete details are cancelled rather than processed: **we prefer a cancelled request over funds sent to the wrong destination.** --- ## 5. Data Retention We retain your data for as long as your affiliate account remains active. After termination, we retain what is necessary to comply with legal, tax, and anti-fraud obligations — including the record of referral relationships, cancellations, and payments — and delete or anonymize the rest. --- ## 6. Your Rights You may, at any time: - Access the data we hold about you. - Correct inaccurate or outdated data — keeping your payout details current is, in fact, your responsibility. - Request the deletion of your data, subject to the legal retention obligations described above. To exercise these rights, contact us at **privacy@doothemes.com**. --- ## 7. Referred Customers' Data As an affiliate, you can see aggregate information about your referrals: their purchases and the commissions they generate. **You do not receive access to their personal data, payment information, or account details.** The privacy of referred customers is protected with the same rigor as yours. --- This policy complements the general Doothemes Privacy Policy and the Program's [Terms & Conditions](https://doothemes.com/docs/affiliates/terms-conditions). # Program Modification & Termination > This policy establishes, without ambiguity, the rights that Doothemes reserves over the existence, rules, and continuity of the Affiliate Program. By enrolling, every affiliate accepts these conditions in full. Source: https://doothemes.com/docs/affiliates/program-modification-termination --- ## 1. Our Position We are **loyal and fair as far as we are allowed to be**. We built this program to compensate our referrers as much as possible, and we honor that commitment every day. But let there be no doubt: **the Program belongs to Doothemes.** We reserve the entire right to dismiss any referrer, to modify the terms and policies of the Program, and, above all, to terminate the Program — **without prior notice**. --- ## 2. Right to Modify — Without Prior Notice 2.1. Doothemes may modify, at any time and **without prior notice**, any element of the Program, including but not limited to: - These policies and the [Terms & Conditions](https://doothemes.com/docs/affiliates/terms-conditions). - Commission rates, tiers, and the dynamic rate structure. - Validation periods, withdrawal thresholds, payment methods, and processing times. - Eligibility requirements and enrollment conditions. 2.2. Modifications take effect **from the moment of their publication** in the Program documentation. Continued participation after a modification constitutes acceptance of it. 2.3. Modifications are **not retroactive against paid commissions**: what was already paid, was well paid. Pending and future commissions are governed by the rules in force at the time of their approval and payment. 2.4. It is the affiliate's responsibility to review the Program documentation periodically. We may notify relevant changes as a courtesy — but courtesy is not obligation. --- ## 3. Right to Dismiss Any Affiliate 3.1. Doothemes reserves the **entire right to dismiss any referrer from the Program**, at any time, when it deems it necessary for the protection of its brand, its customers, its funds, or the integrity of the Program. 3.2. **We are severe with conduct that may affect our brand.** Terminations for policy violations — SPAM, fraud, tracking manipulation, brand abuse — carry the consequences already established: immediate termination, forfeiture of funds, and release of all referred customers, without warning and without appeal. 3.3. In dismissals **without cause** — that is, not motivated by a violation — Doothemes will honor every pending payment obligation with the affiliate before closing their account. --- ## 4. Right to Terminate the Program — Without Prior Notice 4.1. Doothemes may **terminate the Affiliate Program entirely, at any time and without prior notice**, for any reason: strategic, commercial, legal, or operational. No affiliate acquires a right to the perpetual existence of the Program. 4.2. Termination of the Program extinguishes all referral relationships and all future recurring commissions. Recurring commissions exist only while the Program exists. 4.3. **Our responsibility in a termination is clear and limited to this:** Doothemes will fulfill **all of its pending payment responsibilities to affiliates** — approved and unpaid commissions, and balances above the applicable thresholds — **provided the funds are available for it**. 4.4. Commissions still Pending at the moment of termination will complete their validation process; those that are approved will be included in the final settlement under the same condition of fund availability. --- ## 5. What We Will Never Do Firmness is not abuse. Even under this policy: - We will not retroactively take away commissions that were **validly paid**. - We will not use a modification to evade payment obligations **already accrued**. - We will not terminate affiliates without cause while withholding what is owed to them. We reserve every right over the Program — not over what you have already legitimately earned. --- This policy is an integral part of the Program's [Terms & Conditions](https://doothemes.com/docs/affiliates/terms-conditions). # Recurring Commissions > Our philosophy is simple: compensate the referrer as much as we are allowed to. That is why commissions at Doothemes are not one-time payments — they are recurring, for life. Source: https://doothemes.com/docs/affiliates/recurring-commissions --- ## What Does "Recurring" Mean? In most affiliate programs, you earn once: the first sale pays, and everything after that belongs to the company. Not here. At Doothemes, when a customer purchases through your referral, **every purchase they make from that moment on generates a commission for you**: - Their first order. - License renewals. - Plan or product upgrades. - Any new product or service they buy — today, next year, or five years from now. One successful referral becomes a **permanent source of income**. --- ## The Referrer Is Forever This is the rule that makes it all work: **A referred customer keeps their referrer forever — and cannot adopt a new referrer afterward.** The referral relationship is consolidated the moment the referred user **completes the registration of their account** — as detailed in the [Cookie & Tracking Policy](https://doothemes.com/docs/affiliates/cookie-tracking-policy). From that point: - The link is **permanent**. It does not expire, and it does not need to be renewed. - **No other affiliate can claim that customer.** Even if the customer later clicks another affiliate's link, the original attribution stands — the customer already has a referrer. - Every future purchase is credited to you **automatically**, with no link, coupon, or cookie required. The attribution battle happens only once, before the customer registers their account. After that, the relationship is sealed. --- ## Why Do We Do This? Because a good referral has value far beyond the first sale. When you bring us a customer, you are not bringing us one order — you are bringing us a relationship that can last years. It is only fair that your compensation lasts just as long. Recurring commissions are our way of rewarding the full value you create, not just a fraction of it. --- ## A Practical Example - [x] You refer a customer in January and they buy a theme. You earn a commission. - [x] In July, they renew their license. You earn again — automatically, without doing anything. - [x] In November, they purchase a custom service. You earn again. - [x] Two years later, they buy a new product for a different project. You earn again. One referral. Income that keeps arriving for as long as that customer keeps buying. --- ## Keep in Mind - Each recurring commission follows the same lifecycle as any other: it is created as Pending, goes through the [Commission Validation Process](https://doothemes.com/docs/affiliates/commission-validation-process), and is approved once the payment is secured. - Your dynamic rate at the time of each sale applies — as your rate grows, so do your recurring earnings. # Requirements > To join the Doothemes Affiliate Program through the standard path — enrollment — you must meet all of the following requirements. Every enrollment is reviewed; if any requirement is not met, your enrollment will not be approved. Source: https://doothemes.com/docs/affiliates/requirements --- ## 1. Be of Legal Age You must be **18 years or older** (or the age of legal majority in your jurisdiction). This is necessary to establish a valid partnership and to legally receive payouts. --- ## 2. Be a Verified Doothemes Customer This is the core requirement of the program. You must have: - An **active Doothemes account** - 100% complete **user profile** - At least **one completed and verified purchase** The program is exclusive to real customers — people who actually know and use our products. No purchase history, no enrollment. **The only exception** to this requirement is admission by invitation, initiated exclusively by Doothemes and governed by the [Invited Affiliates](https://doothemes.com/docs/affiliates/invited) policy. Invitations cannot be requested. --- ## 3. Account in Good Standing Your customer account must be clean: - No open payment disputes or chargebacks. - No refund abuse. - No previous violations of Doothemes policies. --- ## 4. Provide Accurate Information During enrollment you must provide: - **Real, full name** Legal identification of the affiliate. - **Valid email address** Account notifications and communications. - **Valid payout details** Where your commissions will be sent. - **Promotion channels** Where you plan to promote (website, social media, clients, etc.). > False or incomplete information will result in enrollment rejection. --- ## 5. Accept the Terms & Conditions You must read and explicitly accept the program's [Terms & Conditions](https://doothemes.com/docs/affiliates/terms-conditions) before your enrollment can be processed. --- ## Quick Checklist - [x] I am 18 years or older - [x] I have a verified Doothemes account with at least one purchase - [x] My user profile is 100% complete - [x] My account has no disputes or violations - [x] My personal and payout information is real and up to date - [x] I accept the [Terms & Conditions](https://doothemes.com/docs/affiliates/terms-conditions) All checked? **[Enroll Now →](https://doothemes.com/account/affiliates)** # Terms & Conditions > These Terms & Conditions ("Terms") govern participation in the Doothemes Affiliate Program ("the Program"). By enrolling, you declare that you have read, understood, and accepted these Terms in full. If you do not agree with any clause, do not enroll. Source: https://doothemes.com/docs/affiliates/terms-conditions --- ## 1. Acceptance and Scope 1.1. Enrollment in the Program constitutes full and unconditional acceptance of these Terms, together with all complementary Program policies: the [Privacy Policy](https://doothemes.com/docs/affiliates/privacy-policy), the [Cookie & Tracking Policy](https://doothemes.com/docs/affiliates/cookie-tracking-policy), the [Anti-SPAM Policy](https://doothemes.com/docs/affiliates/anti-spam-policy), the [Affiliate Disclaimer](https://doothemes.com/docs/affiliates/disclaimer), and the [Program Modification & Termination](https://doothemes.com/docs/affiliates/program-modification-termination) policy. 1.2. These Terms apply to every affiliate, without exception, from the moment of enrollment until the termination of their participation. --- ## 2. Nature of the Program 2.1. The Program is **closed and exclusive**. Admission is possible only through two paths: **enrollment**, available to verified Doothemes customers who meet the [Requirements](https://doothemes.com/docs/affiliates/requirements), and **invitation**, initiated only and exclusively by Doothemes at its sole discretion, under the [Invited Affiliates](https://doothemes.com/docs/affiliates/invited) policy. 2.2. Invitations **cannot be requested**. There is no application process for the invitation path; any such request will be redirected to the standard enrollment path. 2.3. Invited affiliates are subject to these Terms and to every Program policy under identical conditions to enrolled affiliates, without privilege or exception. 2.4. Doothemes reserves the right to reject any enrollment that does not meet the Requirements, or to revoke an enrollment or invitation obtained through false or inaccurate information. ## 3. Independent Relationship 3.1. The affiliate is an **independent partner**. Nothing in these Terms creates an employment, agency, corporate, or legal representation relationship with Doothemes. 3.2. The affiliate has no authority to act, negotiate, promise, or commit on behalf of Doothemes. All statements made by the affiliate are their own and their sole responsibility, as detailed in the [Affiliate Disclaimer](https://doothemes.com/docs/affiliates/disclaimer). --- ## 4. Referrals and Attribution 4.1. Each affiliate receives a unique referral link. Attribution operates through a tracking cookie that remains active **until the referred user completes the registration of their account**, at which point the referral relationship is recorded permanently, as described in the [Cookie & Tracking Policy](https://doothemes.com/docs/affiliates/cookie-tracking-policy). 4.2. Once registered, **the referred customer keeps their referrer forever and cannot adopt a new referrer**. No subsequent action by another affiliate can alter a consolidated attribution. --- ## 5. Commissions 5.1. Commissions are **dynamic**, determined by the affiliate's performance, with a maximum of **8% per sale**. Doothemes does not guarantee any specific rate or income. 5.2. Commissions are **recurring**: every valid purchase made by a referred customer generates a commission for their referrer, in accordance with the [Recurring Commissions](https://doothemes.com/docs/affiliates/recurring-commissions) policy. 5.3. Affiliates who consider that their rate does not reflect their referral volume may request a review under the [Commission Rate Renegotiation](https://doothemes.com/docs/affiliates/rate-renegotiation) process. A review never reduces the current rate. 5.4. Every commission is created with **Pending** status and is only confirmed after passing the [Commission Validation Process](https://doothemes.com/docs/affiliates/commission-validation-process). A commission may remain Pending for up to 30 days, although Doothemes will always seek to approve it as soon as the payment behind the order is secured. --- ## 6. Cancellation and Recovery of Funds 6.1. Doothemes may cancel commissions — including approved or already paid commissions — when the underlying order is reversed by late disputes, chargebacks, or fraud, as established in [Cancellation of Commissions](https://doothemes.com/docs/affiliates/cancellation-of-commissions). 6.2. When a paid commission is affected, the amount will be **deducted from the affiliate's current or future commissions**. The affiliate accepts this shared-responsibility mechanism as an essential condition of the Program. 6.3. Doothemes commits to disputing every claim as far as it is allowed before accepting any loss. --- ## 7. Withdrawals 7.1. Withdrawals are governed by the [Withdraw Earnings](https://doothemes.com/docs/affiliates/withdraw-earnings) policy: minimum threshold of $50 USD, processing of up to 7 days, and the payment methods available for each region. 7.2. Requests with incomplete profiles or incorrect payment details will be cancelled, and may be resubmitted once the observations are corrected. The balance is never lost for this reason. 7.3. Currency conversion costs, processor fees, and transaction limits are borne by the affiliate according to the chosen payment method. --- ## 8. Prohibited Conduct 8.1. The following are strictly prohibited: SPAM in any form, self-referrals, cookie manipulation, artificial or incentivized traffic, misleading advertising, unauthorized use of the Doothemes brand, and any practice intended to defraud the Program. 8.2. **Doothemes is severe with any conduct that may affect its brand.** Confirmed violations — in particular those covered by the [Anti-SPAM Policy](https://doothemes.com/docs/affiliates/anti-spam-policy) — result in immediate termination of the affiliate, forfeiture of funds, and release of all their referred customers, without prior warning. --- ## 9. Brand Protection 9.1. The affiliate may not register domains, social media accounts, or run paid campaigns that impersonate Doothemes or bid on its brand terms. 9.2. Any authorized use of the Doothemes name and materials is limited to the honest promotion of its products, and may be revoked at any time. --- ## 10. Liability and Indemnification 10.1. The affiliate assumes full responsibility for their promotional activity, their legal compliance, and their tax obligations, under the terms of the [Affiliate Disclaimer](https://doothemes.com/docs/affiliates/disclaimer). 10.2. The affiliate shall indemnify and hold Doothemes harmless from any third-party claim arising from their conduct. --- ## 11. Termination of the Affiliate 11.1. The affiliate may leave the Program at any time by requesting the closure of their affiliate account. 11.2. **Doothemes reserves the entire right to dismiss any affiliate**, with or without cause, when it deems it necessary for the protection of the Program, its customers, or its brand. In terminations without cause, Doothemes will honor all payment obligations pending with the affiliate. --- ## 12. Modification and Termination of the Program 12.1. Doothemes may **modify these Terms and every Program policy, or terminate the Program entirely, without prior notice**, under the conditions detailed in [Program Modification & Termination](https://doothemes.com/docs/affiliates/program-modification-termination). 12.2. In the event of Program termination, Doothemes will fulfill all its payment responsibilities to affiliates, provided the funds are available for it. ## 13. General Provisions 13.1. The invalidity of any clause does not affect the validity of the remaining ones. 13.2. Doothemes failure to enforce a clause at a given moment does not constitute a waiver of it. 13.3. These Terms are governed by the laws of **Perú**, and any dispute shall be submitted to the competent courts of that jurisdiction. --- By enrolling in the Program you confirm your full acceptance of these Terms & Conditions. # Withdraw Earnings > How to withdraw your affiliate commissions: requirements, payment methods, timelines, and important notes. Source: https://doothemes.com/docs/affiliates/withdraw-earnings --- ## Minimum Withdrawal Threshold To request a withdrawal you must have at least **$50 USD in available balance** (approved commissions). Once you cross the minimum threshold, a **"Withdraw Earnings" button** will appear in your dashboard, right next to your available balance. From that moment, **you can request a withdrawal whenever you want** — there are no fixed payout dates. --- ## How to Request a Withdrawal 1. **Reach the threshold** — accumulate at least **$50 USD** in available balance. 2. **Complete your withdrawal details** — make sure your account profile and payment information are complete and correct. 3. **Click "Withdraw Earnings"** — the button next to your available balance. 4. **Wait for processing** — the process can take **up to 7 days** from the moment the withdrawal is requested. --- ## Payment Methods ### Worldwide - [x] **Bitcoin (BTC)** — **Recommended** fast and with the lowest cost for you. - [x] **PayPal** — Available worldwide — **all PayPal withdrawals carry fees** ### 🇵🇪 Perú - [x] **Yape** — Subject to transaction limits — large withdrawals may be split into **multiple payments**. - [x] **Plin** — Subject to transaction limits — large withdrawals may be split into **multiple payments**. - [x] **Interbank transfer (CCI)** — Standard bank transfer using your CCI code. --- ## Currency Conversion Withdrawals are calculated in **USD**. If your receiving account does not support US dollars, the payment will be made in the **supported currency of your account**, applying the corresponding **conversion rates as an additional cost**. --- ## Cancelled Withdrawal Requests Your withdrawal request will be **cancelled** if: - Your account profile is **incomplete**, or - Your payment details are **incorrect** Don't worry — nothing is lost. Your balance remains intact and **you can submit a new request as soon as you fix the observations**. ## Summary - [x] **Minimum withdrawal** $50 USD. - [x] **When can I withdraw?** Anytime, once you cross the threshold. - [x] **Processing time** Up to 7 days from the request. - [x] **International methods** Bitcoin (recommended), PayPal (with fees). - [x] **Methods in Peru** Yape, Plin, interbank transfer (CCI). - [x] **Currency** USD — conversion rates apply if your account doesn't support dollars. # Dbmovies > Welcome to the official Dbmovies documentation. This page introduces the product, its core capabilities, and how this documentation is organized so you can find what you need quickly. Source: https://doothemes.com/docs/dbmovies --- ## Welcome Thank you for your patience during the long wait, and above all, thank you for your continued preference and trust in Doothemes. This documentation is the result of that commitment to you: a complete, up-to-date resource for everyone working with Dbmovies, from site owners to theme and addon developers. --- ## What is Dbmovies? Dbmovies is a premium WordPress plugin that turns your website into a fully featured movies and TV shows platform. It is a powerful content engine that allows you to generate large amounts of content in minutes, extracting fresh, structured data from **The Movie Database (TMDb)** and **IMDb** with no delays. Instead of creating every movie, show, season, and episode by hand, Dbmovies automates the entire workflow: it registers the content structure, imports the data, keeps it updated, and gives you the administration tools to manage a media catalog at scale. --- ## Key Features **Content Engine** - Custom content types: Movies, TV Shows, Seasons, Episodes, Persons, and Collections. - One-click importers for movies and TV shows from TMDb. - Automatic generators for complete seasons and episode lists. - Meta updaters to keep ratings, posters, and metadata synchronized. **Site Modules** - Video Player module to manage embedded players and playback sources. - Links module to organize and share streaming or download links. - Reports module so users can report broken links or playback issues. - Requests module to receive content requests from your audience. **Monetization** - Subscriptions and plans with configurable access levels. - Payments, taxes, and discounts managed from the admin panel. **Administration and Security** - Application page: a central dashboard to manage the plugin services. - Firewall to protect your platform from abusive traffic. - Tools such as the Domain Exchanger and the Restorer. --- ## Built With - TMDb API, the primary source of movies and TV data. - WordPress custom post types, taxonomies, and REST API. - Codestar Framework for the admin options panel. - jQuery and Font Awesome on the frontend. --- ## Who is Dbmovies for? - Site owners who want to launch a movies and series catalog quickly. - Content managers who need bulk import and update tools. - Developers building themes or addons on top of the Dbmovies structure. --- ## How this documentation is organized - Getting Started: requirements, installation, and license activation. - Settings: initial configuration, importers, links, mail, integrations, firewall, and theme options. - Content: Application, Movies, TV Shows, Episodes, Persons, Collections, and Meta Updater. - Finance: subscriptions, plans, payments, taxes, and discounts. - Tools: Domain Exchanger and Restorer. - Developers: theme integration, addon development, and API reference. --- ## Support - Premium support portal for customers with an active license. - Community forum at community.doothemes.com, open to all Doothemes users. - Dbmovies Help and Share group on Facebook. Note: the GitHub issue tracker is reserved for core Dbmovies bugs only. Please use the channels above for support requests. # 1.3.14 Source: https://doothemes.com/docs/dbmovies/releases/1-3-14 --- ### Sistema de Peticiones de contenido (Requests) Nueva funcionalidad completa para que los usuarios soliciten títulos y el operador los gestione. - Nueva tabla `dbmovies_requests` con columna `metadata` (JSON extensible). - Endpoint AJAX autenticado `dbmovies_requests`: buscar en TMDB, crear, listar y cancelar peticiones. - La búsqueda devuelve estado de cada resultado (disponible / ya pedido), permalink de los disponibles y fecha de estreno formateada. - Se guarda el `poster_path` del título en la metadata para mostrar miniaturas en el listado. - Nueva página de administración Dbmovies > Requests: - Columnas Title / Hash, Year, Type, User, Requested, Status y Actions. - Cambiar estado de la petición (created / processing / published / refused) inline. - Botón Import: importa el contenido a la base de datos y marca la petición como publicada. - Botón Delete con confirmación y opción "Don't ask again" (omite la confirmación por 24 h). - Animación flashit en la fila mientras se procesa una acción. - Notificaciones en el admin bar: badge de peticiones pendientes + burbuja en el submenú. - Helper `dbmovies_user_request_status_counts` (conteo por estado en una sola query). ### Backend del área de cuenta de usuario (DbmoviesUserAccount) Backend completo para las secciones privadas del usuario (consumido por el theme). - Settings: actualizar perfil (nombre, género, fecha de nacimiento), email y contraseña. - Cambio de email riguroso en 2 pasos: verificación por OTP enviado a la casilla nueva. - Teléfono: catálogo de países (ISO2 + código), validación por país y consolidación de los campos en una sola meta serializada (whatsapp / telegram). - Sesiones activas: listar dispositivos, cerrar todas las sesiones o revocar una sesión individual (con icono por tipo de dispositivo). - Paginación de Billing (load_payments), My list (load_list) y Ratings (load_ratings). - Ratings: quitar el voto propio (`dbmovies_rating_remove`), getter paginado con orden y promedio del usuario. ### Notificación de licencia en el admin bar Nuevo badge en Updates cuando no hay una licencia activa instalada. ## Mejoras ### Gestión de enlaces (Sources / Links) - Alta de enlaces unificada entre el metabox del editor y la página de administración. - `source_hash` con formato CSPRNG (16 hex, único), igual que suscripciones y pagos. - Reordenamiento de columnas en la tabla de Links (Server / Hash, Type, Status, Post; Lang / Quality en segundo lugar). ### Componentes de administración - `confirmDialog`: soporte para un tercer botón opcional (clase button-small). ## Ajustes - Account meta: patrón store-or-delete para no acumular filas vacías en `wp_usermeta`. - Ajuste en la taxonomía de géneros (codestar). # 1.3.15 > Migración del sistema de licencias y distribución a la API de producción, y conversión de la página de Updates en un hub multi-producto. Source: https://doothemes.com/docs/dbmovies/releases/1-3-15 --- ## Added - Hub de licencias multi-producto en Dbmovies > Updates: una fila por producto Doothemes (plugin + theme + add-ons), con rediseño Lista + Drawer. - Botón "Check now" en el drawer: revalida la licencia al instante y refresca las métricas sin recargar. - IMDb vía api/v1: pooling de licencias (dbmovies primaria, productos registrados como respaldo) derivado del registro, con fallback por cuota. - Iconografía del hub (zap para el plugin, blocks para themes) y wordmark de Doothemes en la cabecera. - Ayuda contextual de Updates: overview, activación, estados, sincronización, límites diarios y cuota compartida, y desactivar vs desinstalar. ## Changed - Licencias cableadas a la API de producción (activate / check / deactivate) mediante la constante `DOOTHEMES_API` (edge.wupdater.com/v1). - Persistencia de owner_email + limits del payload nuevo; guard de producto (no se puede activar dbmovies con una licencia de wovie). ## Removed - Backend EDD/wupdater legacy: clases DoothemesUpdater y DoothemesUpdaterClient. - Constantes obsoletas: `DBMVS_API_EDD`, `DBMVS_API_WUPDATER`, `DBMVS_WUPDATER_ID` y DBMVS_WUPDATER_HASH (esta última, un secreto hardcodeado). ## Internal - Constante `DBMVS_API_V1` renombrada a `DOOTHEMES_API`. # 1.3.16 > Segunda entrega del hub de licencias: el drawer pasa de mostrar el estado a gestionar el ciclo de vida de la licencia (consumo, renovacion, upgrades), y el enriquecimiento de IMDb recupera la clasificacion. Source: https://doothemes.com/docs/dbmovies/releases/1-3-16 --- ## Nuevo - **Seccion Usage en el drawer de licencia.** Barra de consumo de peticiones del dia (usadas sobre el limite diario) con el color de acento de WordPress, y barra de consumo del periodo de licencia calculada sobre un horizonte de un año con el detalle exacto de dias restantes. - **Gestion del plan.** El drawer cablea `renew_url` y la lista completa de `upgrades[]` que devuelve la API: cada tier superior se lista con su etiqueta, precio y enlace de compra. - **CTA contextual de renovacion.** Con mas de 30 dias de margen el boton ofrece *Extend license expiration*; a 30 dias o menos, y con la licencia vencida, cambia a *Renew license*. ## Cambios - **IMDb: se envia el tipo del titulo.** Las peticiones a `api/v1/imdb` incluyen `type` (`movie` o `tv`). El servidor lo necesita para resolver los metadatos en TMDb, donde un mismo ID existe como pelicula y como serie; sin el, los titulos importados se quedaban sin clasificacion (`rated`). El valor se normaliza y se omite si no es valido, de modo que la puntuacion y los votos se sirven igual y nunca se guarda el metadato de otro titulo. ## Correcciones - **Desinstalacion de licencias invalidas o inactivas.** El boton de desinstalar aparece con la licencia presente aunque no este activa, y la limpieza del estado local se ejecuta siempre: si el servidor rechaza la desvinculacion (hash obsoleto de un sitio ya desactivado), el sitio queda igualmente limpio en vez de bloquearse con una licencia imposible de quitar. # 1.3.17 > El retiro de app.dbmvs.com Source: https://doothemes.com/docs/dbmovies/releases/1-3-17 --- > Cambio de infraestructura, no de base de datos. Esta versión saca al plugin > del servidor legacy `app.dbmvs.com`: updates, espejo de TMDb y licencias > pasan por completo a la API de producción (`edge.wupdater.com/v1`). > > ⚠️ **Propagación:** los sitios que corren 1.3.16 o anterior tienen el updater > VIEJO, que pregunta a `app.dbmvs.com`. No verán una 1.3.17 publicada solo en > la API nueva. Ver `## Despliegue`. La 1.3.16 cerró el hub de licencias. Esta versión termina de cortar el cordón con el servidor legacy y trae al plugin dos cosas que vivían fuera de él: la filmografía (que estaba en el theme) y un censo de instalaciones. También arregla un heartbeat de licencias que llevaba más de un año sin latir de verdad. --- ## El canal de actualización deja el servidor legacy Era el último consumidor vivo de la constante `DBMVS_API_URL` (`app.dbmvs.com`). `DbmoviesUpdater::make_api_request()` posteaba a `app.dbmvs.com/licenses/updater` y esperaba un **objeto PHP serializado** (formato estilo EDD). Todo el resto del licenciamiento (activate/check/deactivate) ya corría por `DOOTHEMES_API` desde la 1.3.15; solo el transient de updates seguía anclado al legacy. Ahora `check_for_updates()` y `fetch_plugin_info()` consultan `POST edge.wupdater.com/v1/license/updates` con JSON y las credenciales de la licencia `{license_key, hash, domain, product_slug, current_version}`, según el contrato de `app.doothemes/docs/license-api.md`. `make_api_request()` se eliminó; en su lugar `update_request()` **reusa `api_post()`** —el mismo transporte que activate/check, con `_network` para no degradar estado— con un timeout corto (10s) porque corre en cargas del admin. `update_item()` arma el objeto del transient. Decisión de criterio: solo se ofrece update con **versión mayor Y `package` presente**. Si el servidor no tiene el zip en disco (`package:null`), no se lanza a WordPress a una descarga que fallaría; se registra `no_update` y listo. La constante `DBMVS_API_URL` quedó **eliminada** del código (cero referencias). ## El espejo de TMDb, acotado al servidor y al panel El proxy de TMDb migró al espejo nuevo (`edge.wupdater.com/v1/tmdb` y `/tmdbimg/{token}`), que el servidor entrega en las respuestas de `activate`/`check` y renueva el token de imágenes (TTL 7 días) en cada heartbeat. Es **opt-in**: solo se usa si el operador enciende el switch en el importador. Lo importante es dónde **no** se usa. El espejo de imágenes toca únicamente el lado servidor (importación) y el panel de importación. El front nunca pasa por él: las imágenes del sitio salen de la librería de medios o del CDN que el cliente haya configurado. Rutear el front por el espejo, con sitios de decenas de miles de vistas, serían cientos de miles de tránsitos por sitio contra nuestra infraestructura — un tiro en el pie. `dbmovies_cdn_image_url()` y `dbmovies_get_image_featured()` lo excluyen a propósito. ## La filmografía se muda al plugin Los créditos de una persona (su filmografía) los resolvía el theme, y versionaba su caché guardando claves `wovie_person_credits_v_*` en la tabla `options` — más de diez mil filas en un sitio con catálogo. El versionado de caché no va en `options`. Ahora la capa de datos vive en el plugin (`includes/functions/persons.php`): el versionado de caché usa `termmeta` (que WordPress limpia solo al borrar el término), un grupo de object cache propio, y un filtro (`dbmovies_person_credit_render_callback`) para que el plugin sea dueño de los datos/consulta/caché y el theme siga siendo dueño del HTML. La migración de base de datos (v1.0.26) purga las filas viejas de `options` en la actualización. > **Acoplamiento con el theme:** el theme delega en esta capa desde su commit de > persons. Un plugin 1.3.17 con un theme que todavía tiene la implementación vieja > seguiría escribiendo las filas en `options`. Ver `## Despliegue`. ## El heartbeat que no latía fuera del admin `includes/updater.php` se cargaba solo dentro de `is_admin()`. Pero `wp-cron.php` se ejecuta como una petición de **front**, así que el cron `dbmovies_auth_client` disparaba y solo corría `CronManager::track_last_run` —que lo marcaba "exitoso"— sin que el handler real de revalidación estuviera siquiera cargado. El bug entró el 2025-06-07 y vivió más de un año: el panel decía que el heartbeat corría, y no revalidaba nada. Ahora el updater se carga también en contexto de cron y WP-CLI. El heartbeat vuelve a pegarle al servidor: refresca límites, `owner_email`, y renueva el token de imágenes del espejo. ## Runtime sync: censo de instalaciones Se añadió `DbmoviesRuntime` (`includes/controllers/DbmoviesRuntime.php`), un módulo que reporta la instalación al servidor una vez por hora. Envía dominio, `admin_email`, IP del servidor y un identificador que el servidor emite en el primer contacto; el servidor puede responder con una key, y con órdenes manuales de un operador (`notify` para mostrar un aviso de licencia en el admin, `deactivate` para desactivar el plugin). Es estado, no eventos: se reevalúa en cada respuesta. Es autónomo a propósito: endpoint y product hash van embebidos, no salen de las constantes de red del updater, para no romperse cuando esas se muevan y para no acoplarse al ciclo de licencias. No aparece en el gestor de crons (es mantenimiento interno, no una tarea del operador del sitio). Ante cualquier fallo de red no toca nada: una desactivación no puede nacer de un DNS caído. La divulgación de lo que se recoge (dominio, email de admin, IP) vive en el `readme.txt`, que viaja en el ZIP de distribución (los `.md` del repo están `export-ignore`). ## Verificación Contra el servidor real, solo lectura, sin descargar el paquete: - `edge.wupdater.com/v1/license/updates` responde JSON. Con key inválida: `{success:false, code:invalid_key}` → `update_request()` retorna null (fail-safe, no ofrece update). - Con la licencia real del sitio (wovie.io, `active`, vitalicia): `success:true, version:null` → al día. Declarando `current_version=0.0.1` el canal **entrega**: `version 1.3.16`, `checksum`, `size 1367736`, `changelog` HTML y `package` con token firmado. La cadena completa (auth → entitlement → versión + paquete) queda confirmada. - El endpoint legacy (`app.dbmvs.com/licenses/updater`) sigue respondiendo 200 con objeto serializado: el canal viejo aún vive, dato clave para la propagación. `php -l` limpio en los archivos tocados; cero referencias a `DBMVS_API_URL`. ## Despliegue Bump a 1.3.17 en el header del plugin y en `DBMVS_VERSION`. Publicar el zip de distribución como asset del release de GitHub — es de ahí de donde la API de producción resuelve la última versión: ``` https://github.com/doothemes/dbmovies/releases/download/1.3.17/dbmovies-1.3.17.zip ``` **Dos condiciones que no son opcionales:** 1. **Canal legacy, por única vez.** Los sitios en 1.3.16 y anteriores tienen el updater viejo, que solo consulta `app.dbmvs.com/licenses/updater`. Para que reciban 1.3.17 hay que servir este zip **también por el canal legacy**. Recién cuando la flota esté en 1.3.17 hablarán con `edge.wupdater.com`, y ahí sí se puede apagar `app.dbmvs.com`. Apagarlo antes deja a los sitios existentes sin auto-update hacia esta build. 2. **Theme en lockstep.** El cambio de filmografía está partido entre plugin y theme: el plugin 1.3.17 provee la capa de datos y el theme la consume. Un plugin 1.3.17 con un theme viejo seguiría poblando `options` con las claves de caché de persons (el theme viejo no usa el filtro nuevo). El theme (wovie 1.2.16) debería salir junto con esta versión, y su nota marcar que requiere plugin ≥ 1.3.17. Las licencias ya activadas conservan su estado; el primer `check` posterior a la actualización revalida y renueva el token del espejo. La migración de `options` (persons) corre sola, sin intervención. --- ## Changelog This release moves the plugin off the old Doothemes server. Updates, the TMDb mirror and license checks now run through the production service, and cast and crew filmographies are handled by the plugin itself. ### What's new - **TMDb mirror** — When your server cannot reach TMDb directly, the importer can pull metadata and images through the Doothemes mirror. It is off by default and used only during import and in the admin; the public site never routes through it. ### Improvements - Cast and crew filmographies now load from the plugin with their own cache. Person pages are faster, and the database stays clean instead of filling up with per-page cache entries. - Updates and license checks now go through the Doothemes service directly, with no intermediate server in between. ### Fixes - The periodic license check only ran inside the WordPress admin, so a site with little admin activity could stop revalidating its license and refreshing its limits. It now runs on schedule regardless of admin traffic. # Ad Manager Source: https://doothemes.com/docs/dbmovies/modules/ad-manager --- # Analyze link health Source: https://doothemes.com/docs/dbmovies/tools/analyze-link-health --- ![This tool analyzes the health of your links.](https://cdn.wupdater.com/dbmovies/screenshot/890d6019c5d18370.png) # Auto-Embed support Source: https://doothemes.com/docs/dbmovies/settings/auto-embed-support --- # Cleanup orphaned persons Source: https://doothemes.com/docs/dbmovies/tools/cleanup-orphaned-persons --- ![This tool keeps unnecessary content at bay in the database, especially in the Persons taxonomy.](https://cdn.wupdater.com/dbmovies/screenshot/847cae60be634492.png) # Collections > Collections is the content type you use to group related titles under a single page. This page explains what a collection is inside Dbmovies, how you add content to it, how its permalink is configured, and everything it supports, all from an administrator point of view. Source: https://doothemes.com/docs/dbmovies/post-types/collections --- ## Overview A collection is a group of related titles gathered under one page. It is the tool you use to bring together content that belongs together, for example all the films of a saga, a themed selection, or any set of titles you want to present as a unit. A few examples of collections you could create: - A movie saga, such as all the films of a franchise. - A shared universe that mixes films and series. - A curated list, such as staff picks or a seasonal selection. Unlike movies, series, and episodes, a collection does not describe a single title. Instead, it acts as a container: you give it a name and a description, and then you add the titles that belong to it. You will find Collections in the main menu of your WordPress admin panel, with its own icon. From there you can see the list of your collections, add new ones, and edit or delete the existing ones. --- ## What a collection contains A collection has two parts: - Its own information: a title and a description that present the collection on your website, just like any regular page. - Its related content: the list of titles that belong to the collection, which you build with a dedicated tool. The titles you add to a collection are your existing movies and episodes. A collection does not duplicate them; it simply points to content that already exists on your website. --- ## Adding content to a collection When you edit a collection, Dbmovies adds a panel called Related content. This is where you build the collection, and it works like a live search: 1. Click on the search field and start typing the name of a title. 2. Dbmovies shows matching results as you type. You can also use the keyboard shortcut Ctrl + Q to jump straight to the search field. 3. Click a result to add it to the collection. It immediately appears in the list below. 4. Repeat for every title you want to include. The list shows useful information for each item you have added, such as its title, its type, its release date, and when it was added, so you always know what the collection contains. A counter keeps track of the total number of items, and if the collection is large, a Load more button lets you browse through all of its content. To remove a title, use the manage option next to it in the list. Removing a title from a collection only takes it out of the group; it does not delete the original movie or episode from your website. --- ## Permalink for Collections Every collection has its own web address (permalink), and Dbmovies lets you decide the word that appears in that address for all your collections. This option is located inside the standard WordPress permalinks screen: 1. Go to **Settings > Permalinks** in your WordPress admin panel. 2. Scroll down to the **Dbmovies: Post** Type section. 3. Find the field labeled **Type: Collections**. 4. Type the word you want to use for your collections. The default value is `collections`. 5. Click **Save Changes**. With the default value, the address of a collection looks like this: ```permalink https://your-website.com/collections/star-wars-universe ``` You can use the word that best fits your website or your language. If you leave the field empty, Dbmovies uses the default value. :::info After changing any permalink option, visit **Settings > Permalinks** once and save, so WordPress refreshes your site links. ::: --- ## What Collections supports A collection is built around its title, its description, and its related content. When you edit a collection, you have these options: - **Title:** the name of the collection as it appears on your website. - **Editor:** the main text area, used for the description of the collection. - **Comments:** your visitors can comment on the collection, and you can enable or disable them. - **Author:** the collection is associated with the user who published it. - **Related content:** the panel described above, where you add and manage the titles of the collection. Unlike movies and series, a collection does not use genres, years, or the other classifications, because its purpose is not to describe a single title but to group several of them. --- ## Summary A collection in Dbmovies is a page that groups related titles. It has its own title and description like any WordPress content, and its heart is the Related content panel, where you search for your movies and episodes and add them to the group with a live search. A collection never duplicates or deletes your content; it only points to titles that already exist. Its web address is fully configurable from the standard WordPress permalinks screen. # Core modules Source: https://doothemes.com/docs/dbmovies/settings/core-modules --- # Countries Source: https://doothemes.com/docs/dbmovies/taxonomies/countries --- # Cron Jobs Source: https://doothemes.com/docs/dbmovies/tools/cron-jobs --- ![Automate management and cleaning tasks in your database.](https://cdn.wupdater.com/dbmovies/screenshot/0741ec78158c6b00.png) # Custom badges Source: https://doothemes.com/docs/dbmovies/settings/custom-badges --- # Data importer Source: https://doothemes.com/docs/dbmovies/settings/data-importer --- # Deploy CDN Server Source: https://doothemes.com/docs/dbmovies/guides/deploy-cdn-server --- # Episodes > Episodes is the content type you use to publish the individual episodes of your series. This page explains what an episode is inside Dbmovies, how it connects to its series, how its permalink is configured, everything it supports, and the easiest way to create episodes in bulk. Source: https://doothemes.com/docs/dbmovies/post-types/episodes --- ## Overview An episode is a single chapter of a series. Each episode is its own content on your website, with its own page, its own title, and its own details, but it always belongs to a series and to a specific season. Episodes are the third level of the series structure: - The series is the parent record. - The seasons are stored inside the series. - The episodes are individual content, linked to the series. You will find Episodes inside the TV Shows menu of your WordPress admin panel. They are not a separate top-level menu: because episodes always depend on a series, Dbmovies places the Episodes list under TV Shows, right next to your series. --- ## How an episode connects to its series Every episode is connected to its series through three pieces of information that you find in the Main data tab when you edit an episode: - TV Show: the series the episode belongs to. You start typing the name of the series and select it from the list. - Season Number: the season the episode belongs to. - Episode Number: the position of the episode within that season. With these three values, the episode knows which series it belongs to and where it sits inside it. This is what allows your website to show the episode in the right series and in the right order. --- ## Permalink for Episodes Every episode has its own web address (permalink), and Dbmovies lets you decide the word that appears in that address for all your episodes. This option is located inside the standard WordPress permalinks screen: 1. Go to **Settings > Permalinks** in your WordPress admin panel. 2. Scroll down to the **Dbmovies: Post Type** section. 3. Find the field labeled **Type: Episodes**. 4. Type the word you want to use for your episodes. The default value is `episodes`. 5. Click **Save Changes**. With the default value, the address of an episode looks like this: ```permalink https://your-website.com/episodes/ahsoka-season-1-episode-1 ``` You can use the word that best fits your website or your language. If you leave the field empty, Dbmovies uses the default value. :::info After changing any permalink option, **visit Settings > Permalinks** once and save, so WordPress refreshes your site links. ::: --- ## What Episodes supports When you edit an episode, you have the standard WordPress options plus a dedicated Metadata panel provided by Dbmovies. ### Standard WordPress options - **Title:** the title of the episode as it appears on your website. - **Editor:** the main text area, used for the description of the episode. - **Featured image:** the image of the episode. - **Comments:** your visitors can comment on each episode, and you can enable or disable them. - **Author:** the episode is associated with the user who published it. ### The Metadata panel Below the editor, Dbmovies adds a Metadata panel with two tabs: - **Main data:** the connection to the series (TV Show, Season Number, Episode Number) and the details of the episode. Here you also set the TMDb ID, a quality badge, the episode name, the air date, and the runtime in minutes. - **Images:** the main backdrop of the episode, plus an additional gallery of backdrops. ### The quality badge Each episode can display a quality badge, which you choose in the Main data tab. The available options are None, 4K, 2K, HD, SD, and CAM. We suggest always selecting the highest quality available for the episode. This badge is a quick visual indicator for your visitors. --- ## Creating episodes the easy way Adding every episode by hand would be slow, so Dbmovies is designed to generate episodes directly from the series, taking the data from The Movie Database (TMDb). The idea is simple: you open the series, and from there you generate its episodes season by season. Dbmovies reads the seasons of the series, lets you pick a season, and creates its episodes for you, already connected to the series and correctly numbered. When episodes are generated this way, Dbmovies takes care of everything: - It links every new episode to the correct series. - It assigns the season number and the episode number to each one. - It builds the title and the web address of each episode from a consistent pattern, so all your episodes follow the same style across your website. - It brings in the episode details, such as the name, the air date, the runtime, and the images. - It avoids duplicates: if an episode already exists, Dbmovies updates it instead of creating a repeated one. You can always edit any episode by hand afterwards if you need to adjust a title, a description, an image, or the quality badge. ### Keeping episodes updated Because each episode stores its identifiers, its information can be refreshed automatically over time using the Meta Updater, so details like the episode data stay in sync with the source without manual work. --- ## Summary An episode in Dbmovies is a single chapter of a series. It supports a title, a description, an image, comments, and an author like any WordPress content, and it adds episode information: the link to its series, its season and episode numbers, a quality badge, air date, runtime, and images. Its web address is configurable from the standard WordPress permalinks screen. The recommended way to create episodes is to generate them from the series, so they are linked and numbered automatically, and their data can stay up to date thanks to the connection with TMDb. # Extend permalink Source: https://doothemes.com/docs/dbmovies/guides/extend-permalink --- # Featured content Source: https://doothemes.com/docs/dbmovies/modules/featured-content --- # Firewall Source: https://doothemes.com/docs/dbmovies/settings/firewall --- # Genres Source: https://doothemes.com/docs/dbmovies/taxonomies/genres --- # Import images Source: https://doothemes.com/docs/dbmovies/settings/import-images --- # Import limits Source: https://doothemes.com/docs/dbmovies/settings/import-limits --- # Importers Source: https://doothemes.com/docs/dbmovies/modules/importers --- # Initial settings > This page covers the first settings you should review right after activating your license. Dbmovies works with a default configuration out of the box, but a few adjustments are required to guarantee that all the services of the plugin work perfectly. Source: https://doothemes.com/docs/dbmovies/initial-settings --- ## Default configuration **Dbmovies ships with a default configuration**. From the moment you activate the plugin, all the modules load with safe and functional values, so you do not need to configure everything before you start working. :::note You only need to pay attention to the settings described on this page and to the notices the plugin shows in your admin panel. ::: --- ## Admin notices If any important setting is pending, Dbmovies displays a notice on screen at all times in your admin panel. These notices point to any setting that requires the intervention of an administrator. **Do not ignore these notices**. As long as a notice is visible, some service of the plugin may not be working at its full capacity. Once you complete the indicated setting, the notice disappears automatically. --- ## Permalink structure **This is the priority setting**. Dbmovies requires a proper permalink structure to correctly generate the URLs of movies, TV shows, episodes, and the rest of its content. ![Recommendation for permalink settings.](https://cdn.wupdater.com/dbmovies/docs/75913f4469f8aed3.webp) The recommended setting is: 1. Go to **Settings > Permalinks** in your WordPress admin panel. 2. In the **Permalink structure** section, select **Custom Structure**. 3. In the text field, enter only: `/%postname%` 4. **Do not add a slash at the end** of the structure. 5. Click Save Changes. This is the recommended setting. You can use any other permalink structure if your project requires it, and the plugin will work anyway, but the structure above is the one we recommend for clean and consistent URLs. --- ## Email settings (SMTP) Completing the email settings is another vital step for the system to work perfectly. Dbmovies sends emails for several of its services, and delivery through SMTP is far more reliable than the default PHP mail function. ![SMTP server connection settings for sending system emails.](https://cdn.wupdater.com/dbmovies/docs/f1625eef588da8c1.webp) To configure SMTP: 1. Go to **wp-admin > Dbmovies > Settings > Email**. 2. Scroll to the **Advanced Settings** section. 3. Check the **SMTP** option. 4. Complete the SMTP settings with the data of your email provider: host, port, encryption, username, and password. 5. **Click Save**. 6. Finally, test your settings with the **Send test message** button. If the test email arrives at your inbox, your configuration is correct. If the test message does not arrive, review the credentials with your email provider and verify that your server allows outgoing connections on the SMTP port you configured. --- ## Next steps With the permalinks and the email delivery configured, and no pending notices in your admin panel, your installation is ready. Continue with the Content section to learn about the post types of the plugin, starting with Movies. # Installation > This page explains how to install Dbmovies on your WordPress website. The process is the same as any premium WordPress plugin: download the ZIP package from your Doothemes account and install it from your admin panel or manually via FTP. Source: https://doothemes.com/docs/dbmovies/installation --- ## Before you start - Verify that your server meets everything described in the Requirements page. - Download the latest Dbmovies package from the Downloads section of your Doothemes user panel, available at [https://doothemes.com/account/downloads](https://doothemes.com/account/downloads). The file is a ZIP archive, for example [dbmovies.zip](https://doothemes.com/account/downloads). Do not unzip it if you plan to install it from the WordPress admin panel. - Make sure your WordPress user has administrator permissions. ## Method 1: Install from the WordPress admin panel (recommended) 1. Log in to your WordPress admin panel (wp-admin). 2. Go to Plugins > Add New Plugin. 3. Click the Upload Plugin button at the top of the page. 4. Click Choose File, select the dbmovies.zip package you downloaded, and click Install Now. 5. Wait for WordPress to upload and unpack the package. 6. When the installation finishes, click Activate Plugin. If the upload fails with a message like "The uploaded file exceeds the upload_max_filesize directive", increase the upload_max_filesize and post_max_size values in your PHP configuration, or use the FTP method below. ## Method 2: Install manually via FTP or SFTP 1. Unzip the dbmovies.zip package on your computer. You will get a folder named dbmovies. 2. Connect to your server using an FTP or SFTP client. 3. Upload the dbmovies folder to the wp-content/plugins/ directory of your WordPress installation. 4. Log in to your WordPress admin panel and go to Plugins > Installed Plugins. 5. Find Dbmovies in the list and click Activate. ## Method 3: Install with WP-CLI If you manage your site from the command line, you can install and activate the plugin with WP-CLI: ```bash wp plugin install /path/to/dbmovies.zip --activate ``` Or, if the plugin files are already in wp-content/plugins/dbmovies: ```bash wp plugin activate dbmovies ``` ## Updating the plugin With an active license, Dbmovies receives updates directly in your WordPress admin panel, in the same way as any other plugin. When a new version is available, you will see the notice in Dashboard > Updates and in the Plugins list. If you prefer to update manually, download the latest package from doothemes.com/account/downloads and repeat the installation. WordPress will detect that the plugin already exists and will offer to replace the current version with the uploaded one. Your settings and content are stored in the database, so they are preserved during updates. ## Uninstalling To remove the plugin, deactivate it from Plugins > Installed Plugins and then click Delete. Keep in mind that the content created by Dbmovies (movies, TV shows, episodes, and settings) is stored in your database. ## Next step After activating the plugin, Dbmovies needs a valid license to unlock all its functions. Continue with the Activation page. # License activation > This page explains how to activate your Dbmovies license. Activation is an important step to guarantee the correct functioning of the plugin: without an active license, the main features remain locked. Source: https://doothemes.com/docs/dbmovies/license-activation --- ## What the license unlocks Your Doothemes license is the only credential Dbmovies needs. Once activated, it provides: - Access to all the plugin functions. - Access to updated IMDb data for your content. - Access to the synchronization services that keep your metadata up to date. - Free updates delivered directly to your WordPress admin panel. --- ## License limits Every license has a daily request limit. Each operation that consumes data from the remote services, such as imports, IMDb data retrieval, and metadata synchronization, counts toward this limit. The limits are defined by the license type you purchased. You can review the available license types and their daily limits on the official store page: [app.doothemes.com/store/dbmovies](https://doothemes.com/store/dbmovies) If you reach your daily limit, the remote operations are paused until the limit resets. You can upgrade to a higher license type at any time if your project needs a larger volume of requests. --- ## Where can I find my license key? When you complete your purchase, you receive an email with the details of your order, including your license key. You can also view and manage all your licenses at any time from your Doothemes account panel: [app.doothemes.com/account/licenses](https://doothemes.com/account/licenses) ## How do I activate my license? 1. Log in to your WordPress admin panel (wp-admin). 2. Go to the Dbmovies menu and open the **Updates** section. 3. Select the **Dbmovies row** to open the trigger. 4. Paste your key into the suggested text field for the license. 5. Click on the **Activate** button ![Manage the Doothemes licenses that your website requires.](https://cdn.wupdater.com/dbmovies/docs/cdf9d85fc124b5d8.webp) If everything went well, you will see a confirmation message, the activation drawer will close, and the license status will be reflected in the list as activated. --- ## Verify your activation After activating, confirm that: - The license status appears as Active in the Dbmovies license section. - The importers can retrieve content without errors. - Plugin updates appear normally in Dashboard > Updates. --- ## Activation problems? Activation makes a request to a remote service, so most problems are related to the server configuration: - Make sure your server can perform outgoing requests via cURL. This is the most common cause of failed activations. - Verify that your firewall or hosting provider is not blocking outgoing connections to external services. - Check that you copied the complete license key, without extra spaces before or after. - Confirm that your license is valid and not already in use beyond the number of sites allowed by your license type. You can review the status of your licenses at [app.doothemes.com/account/licenses](https://doothemes.com/account/licenses). If the problem persists, contact support through the premium support portal with your license key and the error message you received. --- ## Next step With your license active, you are ready to configure the plugin. Continue with the initial settings and connect your Themoviedb API key to start importing content. # Link sources Source: https://doothemes.com/docs/dbmovies/modules/link-sources --- # Mailchecker Source: https://doothemes.com/docs/dbmovies/guides/mailchecker --- # Metaupdater Source: https://doothemes.com/docs/dbmovies/tools/metaupdater --- ![Keep the metadata of all titles published on your website up to date.](https://cdn.wupdater.com/dbmovies/screenshot/9f37a315fe83dc7e.png) # Movies > Movies is the content type you use to publish films on your website. This page explains what a movie is inside Dbmovies, how its permalink is configured, and everything this content type supports, all from an administrator point of view. Source: https://doothemes.com/docs/dbmovies/post-types/movies --- ## Overview Movies is one of the main content types of Dbmovies. Every film on your website is a movie: a single record that holds the title, the poster, the description, the cast, the images, and the rating information of that film. You can create movies in two ways: - **Automatically**, by importing them from The Movie Database (TMDb). This is the recommended and fastest way, and it fills in most of the information for you. - **Manually**, by creating a new movie and completing its fields by hand. You will find Movies in the main menu of your WordPress admin panel, with its own video icon. From there you can see the full list of your movies, add new ones, and edit or delete the existing ones, exactly as you would with regular posts. --- ## Permalink for Movies Every movie has its own web address (permalink). Dbmovies lets you decide the word that appears in that address for all your movies. This option is located inside the standard WordPress permalinks screen, so it lives together with the rest of your site addresses: 1. Go to **Settings > Permalinks** in your WordPress admin panel. 2. Scroll down to the **Dbmovies: Post Type** section. 3. Find the field labeled **Type: Movies**. 4. Type the word you want to use for your movies. The default value is movies. 5. Click **Save Changes**. With the default value, the address of a film looks like this: ```permalink https://your-website.com/movies/star-wars-the-rise-of-skywalker ``` If you change the field to something else, for example `films`, the same movie would be available at: ```permalink https://your-website.com/films/star-wars-the-rise-of-skywalker ``` You can use the word that best fits your website or your language. If you leave the field empty, Dbmovies uses the default value. Remember that this only changes the movies address; each film keeps its own name in the final part of the URL. :::info After changing any permalink option, it is a good practice to visit **Settings > Permalinks** once and save, so WordPress refreshes your site links. ::: --- ## What Movies supports This content type is prepared to describe a film completely. When you edit a movie, you have the standard WordPress options plus a dedicated Metadata panel provided by Dbmovies. ### Standard WordPress options - **Title:** the name of the film as it appears on your website. - **Editor:** the main text area, used for the synopsis or description of the film. - **Featured image:** the poster of the film. - **Comments:** your visitors can comment on each film, and you can enable or disable them. - **Author:** the film is associated with the user who published it. ### Classification: genres, years, countries, and persons Movies can be organized with several classifications that group and connect your content. These same classifications are shared with TV Shows, so a genre or a person is consistent across your whole catalog: - **Genres:** the genres of the film, such as action, drama, or comedy. - **Releases:** the release year of the film. - **Countries:** the countries related to the film. - **Persons:** the people involved in the film, used for directors and cast. - **Tags:** the standard WordPress tags, if you want an extra level of labeling. Each of these classifications also has its own permalink option in the same Settings > Permalinks screen, under the Dbmovies: Taxonomies section. ### The Metadata panel Below the editor, Dbmovies adds a Metadata panel organized in tabs, where you complete all the details of the film: - **Main data:** original title, tagline, poster path, release date, and runtime in minutes. - **Identifiers:** the TMDb ID, the IMDb ID, and the YouTube ID of the trailer. These identifiers connect the film with the external databases and allow Dbmovies to keep its information updated. - **External Metric:** the age rating of the film using the MPAA system (for example G, PG, PG-13, R, or NC-17), together with the rating and number of votes from both TMDb and IMDb. - **Persons:** the list of directors and the cast of the film. For each cast member you can also indicate the character they played. The people you add here come from the Persons classification. - **Images:** the main logo and the main backdrop of the film, plus additional galleries of logos and backdrops. ### Keeping a movie updated Because each film stores its TMDb and IMDb identifiers, its ratings and votes can be refreshed automatically over time using the [Metaupdater](https://doothemes.com/docs/dbmovies/tools/metaupdater), so you do not have to update these numbers by hand. --- ## Summary A movie in Dbmovies is a complete record of a film. It supports a poster, a description, comments, and an author like any WordPress content, and it adds rich film information: genres, year, countries, people, external ratings, images, and trailer. Its web address is fully configurable from the standard WordPress permalinks screen, and its data can stay up to date automatically thanks to its connection with TMDb and IMDb. # Payments Source: https://doothemes.com/docs/dbmovies/modules/payments --- # Persons Source: https://doothemes.com/docs/dbmovies/taxonomies/persons --- # Redis cache Source: https://doothemes.com/docs/dbmovies/guides/redis-cache --- # Releases Source: https://doothemes.com/docs/dbmovies/taxonomies/releases --- # Required pages Source: https://doothemes.com/docs/dbmovies/settings/required-pages --- # Requirements > Before installing Dbmovies, make sure your server and your WordPress installation meet the following requirements. Most activation and import errors are caused by a bad server configuration or by missing data in the plugin dependencies. Source: https://doothemes.com/docs/dbmovies/requirements --- ## Server requirements - A working WordPress installation, **version 7.0** or higher, always updated to the latest stable version. - **PHP 8.1** or higher. PHP 8.2 or **PHP 8.3 is recommended** to get the best performance, active security support, and full compatibility with the modern codebase of the plugin. - MySQL 8.0 or higher, or **MariaDB 11.8.8** or higher. - The **cURL extension** enabled. Dbmovies makes requests to remote services (license activation, importers, and meta updates), so your server must be able to perform outgoing connections via cURL. - The **JSON extension** enabled, used to process the responses from the data services. - Permission to perform **outgoing HTTP and HTTPS requests**. Some hosting providers block external connections by default; ask your provider to allow them. --- ## Server recommendations - **PHP 8.3**, the most recent stable branch supported by the plugin. - **PHP memory limit of 256M** or higher. Bulk imports and season or episode generation consume more memory than a regular WordPress request. - A reasonable **`max_execution_time`** value, since bulk import operations can take longer than a standard page load. - An **SSL certificate** (HTTPS) on your website. - A hosting plan with enough disk space. Imported posters and images are stored in your media library and can grow quickly with large catalogs. --- ## Dependencies Dbmovies consumes data from third-party services. These two keys are required for the plugin to work correctly. ### Themoviedb API Key The Movie Database (TMDb) is the primary source of movies and TV shows data. You need a free TMDb account and an API key generated from your account settings. Without this key, the importers cannot retrieve any content. ### Doothemes License Key When you complete your purchase, you receive an email with your license key. Your license is the only credential Dbmovies needs from Doothemes: it activates all the plugin functions, defines the usage limits of your plan, and gives you access to the Doothemes repository to receive updates for free directly from your WordPress admin panel. All import and update operations are covered by your license according to the limits of your plan. No additional accounts, API keys, or credit systems are required. --- ## Before you continue - Verify that cURL is enabled and that your server can reach external services. - Have your two keys at hand: your TMDb API key and your Doothemes license key. - Confirm that your WordPress user has administrator permissions, required for installation and activation. Once your server meets these requirements, continue with the Installation page. # Restorer Source: https://doothemes.com/docs/dbmovies/tools/restorer --- ![Repair and restore each module simply and efficiently.](https://cdn.wupdater.com/dbmovies/screenshot/fa786f5159b286aa.png) # Sources domain exchanger Source: https://doothemes.com/docs/dbmovies/tools/sources-domain-exchanger --- ![You can reset your link domains by swapping them if necessary.](https://cdn.wupdater.com/dbmovies/screenshot/8c0964626a6b9f86.png) # Subscriptions Source: https://doothemes.com/docs/dbmovies/modules/subscriptions --- # Sync List Source: https://doothemes.com/docs/dbmovies/settings/sync-list --- # Tags Source: https://doothemes.com/docs/dbmovies/taxonomies/tags --- # Titles and content Source: https://doothemes.com/docs/dbmovies/settings/titles-and-content --- # TVShows > TV Shows is the content type you use to publish series on your website. This page explains what a series is inside Dbmovies, how its permalink is configured, everything it supports, and, most importantly, how series, seasons, and episodes work together. This content type behaves differently from Movies, so it deserves special attention. Source: https://doothemes.com/docs/dbmovies/post-types/tvshows --- ## Overview A TV Show is the main record of a series. Unlike a movie, a series is not a single piece of content: it is the top of a structure that also includes its seasons and its episodes. It is important to understand this from the start: - The series is the parent record. It holds the general information: name, poster, description, cast, images, status, and the list of its seasons. - The seasons are stored inside the series. They are not separate content; they live within the series record itself. - The episodes are separate content, and each one is linked to its series. You can create series in two ways: - Automatically, by importing them from The Movie Database (TMDb). This fills in the general information and the list of seasons for you. - Manually, by creating a new series and completing its fields by hand. You will find TV Shows in the main menu of your WordPress admin panel, with its own icon. The Episodes list is available under the same TV Shows menu. --- ## Permalink for TV Shows Every series has its own web address (permalink), and Dbmovies lets you decide the word that appears in that address for all your series. This option is located inside the standard WordPress permalinks screen: 1. Go to **Settings > Permalinks** in your WordPress admin panel. 2. Scroll down to the **Dbmovies: Post Type* section. 3. Find the field labeled **Type: TVShows**. 4. Type the word you want to use for your series. The default value is tvshows. 5. Click **Save Changes**. With the default value, the address of a series looks like this: ```permalink https://your-website.com/tvshows/ahsoka/ ``` Episodes have their own permalink field in the same screen, labeled Type: Episodes, with the default value episodes. A typical episode address looks like this: ```permalink https://your-website.com/episodes/ahsoka-season-1-episode-1/ ``` You can use the words that best fit your website or your language. If you leave a field empty, Dbmovies uses the default value. :::info After changing any permalink option, visit **Settings > Permalinks** once and save, so WordPress refreshes your site links. ::: --- ## What TV Shows supports When you edit a series, you have the standard WordPress options plus a dedicated Metadata panel provided by Dbmovies. ### Standard WordPress options - **Title:** the name of the series as it appears on your website. - **Editor:** the main text area, used for the synopsis or description of the series. - **Featured image:** the poster of the series. - **Comments:** your visitors can comment on each series, and you can enable or disable them. - **Author:** the series is associated with the user who published it. ### Classification: genres, years, countries, and persons Series can be organized with the same classifications used by Movies, so your whole catalog stays consistent: - **Genres:** the genres of the series, such as drama, comedy, or sci-fi. - **Releases:** the release year of the series. - **Countries:** the countries related to the series. - **Persons:** the people involved in the series, used for creators and cast. - **Tags:** the standard WordPress tags, if you want an extra level of labeling. Each of these classifications also has its own permalink option in the same Settings > Permalinks screen, under the Dbmovies: Taxonomies section. ### The Metadata panel Below the editor, Dbmovies adds a Metadata panel organized in tabs: - **Main data:** current status of the series, series name, original name, tagline, poster path, first air date, last air date, average episode runtime, number of seasons, and number of episodes. - **Identifiers:** the TMDb ID, the IMDb ID, and the YouTube ID of the trailer. These connect the series with the external databases and allow Dbmovies to keep its information updated. - **External Metric:** the age rating of the series using the TV Parental Guidelines system (for example TV-Y, TV-PG, TV-14, or TV-MA), together with the rating and number of votes from both TMDb and IMDb. - **Persons:** the list of creators of the series and the series cast. For each cast member you can also indicate the character they played. The people you add here come from the Persons classification. - **Images:** the main logo and the main backdrop of the series, plus additional galleries of logos and backdrops. - **Seasons:** the list of all the seasons of the series. This is explained in detail in the next section. ### Series status A series can be in one of several states, which you set in the Main data tab: Returning Series, Planned, In Production, Ended, Canceled, Pilot, or Unknown status. This lets your website show, for example, whether a series is still on the air or has already finished. --- ## How seasons and episodes work together This is what makes TV Shows different from Movies. A series is organized in three levels: the series, its seasons, and its episodes. Here is how each level is handled. ### Seasons are inserted directly into the series The seasons are part of the series record. In the Seasons tab of the series, you have a list where you can add one season after another with the New season button. For each season you can define: - **Season name**. - **Poster** (an uploaded image or an image URL). - **Overview:** a short summary of the season. - **Season number:** important, because it is used to order the seasons. - **Episodes count:** the number of episodes in that season. - **Air date:** the start date of the season. When you import a series from TMDb, this list of seasons is completed automatically. Because the seasons live inside the series, you manage them from the series itself, not as separate content. ### Episodes are linked to the series Episodes are individual content, and each episode belongs to a series. When you create or edit an episode, its Main data tab includes a field called TV Show. This is where you select which series the episode belongs to: you start typing the name of the series and choose it from the list. Together with that link, each episode declares its position in the series with two fields: - **Season Number:** the season the episode belongs to. - **Episode Number:** the number of the episode within that season. With these three pieces of information (the series it belongs to, the season, and the episode number), the episode is correctly connected and ordered inside its series. An episode also supports its own details: a quality badge (such as 4K, HD, or SD), its own name, air date, runtime, and images. ### The automatic flow When you import episodes, Dbmovies takes care of the whole connection for you: - It identifies the series the episodes belong to and links every new episode to it. - It assigns the season number and the episode number to each episode. - It builds the title and the address of each episode from a consistent pattern, so all your episodes follow the same naming style. - It avoids duplicates: if an episode already exists, Dbmovies updates it instead of creating a repeated one. This means that, in practice, you import the series (which brings in the seasons), and then import its episodes (which are linked automatically). Manual editing is always available if you need to adjust anything. --- ## Summary A TV Show in Dbmovies is the parent record of a series. It supports a poster, a description, comments, and an author like any WordPress content, and it adds rich series information: genres, year, countries, people, external ratings, images, trailer, and status. Its seasons are stored directly inside the series, while its episodes are separate content linked to the series by the TV Show field and ordered by their season and episode numbers. Its web address is fully configurable from the standard WordPress permalinks screen, and its data can stay up to date automatically thanks to its connection with TMDb and IMDb. # Updates Source: https://doothemes.com/docs/dbmovies/modules/updates --- # User ratings Source: https://doothemes.com/docs/dbmovies/modules/user-ratings --- # User requests Source: https://doothemes.com/docs/dbmovies/modules/user-requests --- # View counter Source: https://doothemes.com/docs/dbmovies/modules/view-counter --- # Web App Source: https://doothemes.com/docs/dbmovies/settings/web-app --- # Wovie Source: https://doothemes.com/docs/wovie --- # DooPlay > WordPress theme for movies and TVShows Source: https://doothemes.com/items/dooplay - Type: Theme - Version: 2.5.24 (released Aug 26, 2026) - Demo: https://demo.ews.pe/dooplay - WP Required: 7+ - WP Tested: 7.1 ## Pricing - **Regular License** — $80 · lifetime · 10 sites · 10,000 API requests/day - **Extended License** — $100 · lifetime · 20 sites · 15,000 API requests/day - **Super Extended License** — $200 · lifetime · 50 sites · 20,000 API requests/day - **Mega Extended License** — $300 · lifetime · 100 sites · 40,000 API requests/day --- ## Overview **DooPlay** is a complete platform for building and running a video content website on WordPress. It handles the whole cycle — bringing in titles, organizing them, serving the player, and managing the people who watch — so you spend your time on your catalog instead of on plumbing. > **IMPORTANT: [Dbmovies moved: one line to fix 2.5.5](https://doothemes.com/p/dbmovies-moved-one-line-to-fix-2-5-5)** **Build your catalog in minutes, not months.** Dbmovies, the built-in import tool, pulls titles from a trusted metadata source with a single click: synopsis, cast, directors, genres, ratings, posters and backdrops, in the language you choose. Movies, TV shows, seasons and episodes are separate content types that stay linked to each other, so a series behaves like a series and not like a pile of posts. **Fill the player automatically.** With Auto Embed you set up your video servers once, using a title's IMDb or TMDb id as a placeholder in the address. Every title you import is served with its player options already in place — and when you change a server, the change applies across your whole catalog at once, with nothing to re-import. **Give your visitors a reason to come back.** Registered users keep their own favorites and watched lists, rate what they see, and can submit the titles they want added. Links can be organized by type — streaming, download, torrent or purchase — with quality and language on each one. **Control every detail without writing code.** Eighteen settings sections cover the home layout, sliders, featured content, the player, comments, email, advertising and SEO, with structured data so search engines read your titles as titles. **Built to stay fast as it grows.** A persistent cache keeps repeated work off the database, and version 2.5.7 cuts the queries a title page needs from around thirty to one. User lists are stored in a dedicated indexed table, so a library of ten thousand titles answers as quickly as one of ten. Updates install from your dashboard, with the release notes right there. **Ships in five languages** — English, Spanish, French, German and Turkish — with translation files included so you can add your own. ## Features #### A thousand titles, one click each Search a title, press import. Synopsis, cast, directors, genres, ratings, runtime, posters and backdrops arrive already in place, in the language you pick. Movies, TV shows, seasons and episodes are real, separate content types that stay linked to one another — so a series behaves like a series, and an episode knows which season it belongs to. Add a show and generate its full season and episode structure in one pass. --- #### The player fills itself Set up your video servers once. Write the address with a placeholder where the title's id goes, and every title you import is served with its player options already there. Change a server later and the change reaches your entire catalog at once. Nothing to re-import, nothing to edit title by title. --- #### Every source, organized Streaming, download, torrent or purchase — each link carries its own quality and language, and visitors see them grouped and labeled instead of dumped in a list. The player takes multiple sources per title, shows a flag for each language, and your users can report a broken one without leaving the page. --- #### Visitors who come back Registered users build their own favorites and watched lists, rate what they see, and request the titles they want you to add next — so your roadmap comes from your audience instead of your guesses. --- #### Eighteen panels, zero code Home layout, sliders, featured rows, player behavior, comments, email, advertising and SEO, all from a settings screen. Structured data ships built in, so search engines read your titles as titles — with their ratings, cast and release dates. --- #### Fast at ten titles. Fast at ten thousand. A persistent cache keeps repeated work off your database. In 2.5.7 a title page went from around thirty database queries to one, and user lists moved to a dedicated indexed table — so a library of ten thousand titles answers as quickly as a library of ten. --- #### Updates that take one click New versions appear in your dashboard with the release notes attached. Read what changed, press update, done. ## Requirements #### Server - PHP 8.1 or higher. Tested through PHP 8.3.9, with no deprecation notices. - WordPress 6.0 or higher, on a standard installation. - MySQL 5.6+ or MariaDB 10.1+, with InnoDB available. DooPlay creates one table of its own for user lists. - 128 MB of PHP memory as a working minimum. Importing titles downloads and resizes artwork, so 256 MB makes bulk imports comfortable. --- #### PHP extensions - `json`, `mbstring` and `curl` — all three ship enabled with virtually every host. - An image library, GD or Imagick, so WordPress can generate poster and backdrop sizes. --- #### Permissions - Write access to `wp-content/uploads` for artwork, and to `wp-content/cache` for the persistent cache. - Permission to create one table in your database, done automatically on install. If your host doesn't allow it, DooPlay keeps working without it. --- #### Outbound connections Your server needs to reach: - The metadata service, for importing titles and artwork. - The Doothemes license server, for activation and updates. Both over HTTPS on port 443. Hosts that block outbound requests will prevent imports and updates from working. --- #### License One license activates one domain. Moving to a different domain takes a minute — deactivate on the old one, activate on the new — and does not affect your content. ## Changelog ### v2.5.24 `Aug 26, 2026` > Latest version of the line 2.5, next major version 2.6 - **CHANGE:** The cache folder for seasons and episodes moves out of the theme, to `wp-content/uploads/dooplay/`. It is created automatically, nothing to do by hand, and theme updates no longer delete it. - **CHANGE:** Managing links now requires a valid security token. Updating is a priority for every site. - **NEW:** Movie Info and TV Show Info now open with a section that shows whether the entry is linked to a title, and what to do about it. - **NEW:** Typing an ID that another entry already uses shows a warning with its name and a link to it. - **NEW:** The button that opens the season importer is now part of the metabox, so it also works with the block editor turned off. - **IMPROVE:** Series and movie pages show the linked ID, a link to its page on the source site, and when its metadata was last updated. - **IMPROVE:** The metadata and season import buttons are now on the entry itself, instead of only on the list screens. - **IMPROVE:** Season and episode lists load from cache again, which removes several database queries per season on every series page. - **FIX:** Season dates on series pages showed their formatting tags as plain text. - **FIX:** A series with a single season read "1 seasons". - **FIX:** The Update metadata button appeared on sites where that content type was disabled in the updater settings, where it could not work. - **FIX:** Saving an entry, the daily cleanup and the Delete cache button no longer raise a PHP warning when the cache folder is missing. --- ### v2.5.23 `Aug 25, 2026` - **CHANGE:** Link management now requires permission to edit the entry the link belongs to. Updating is a priority for every site. - **CHANGE:** Metabox titles in the block editor go back to the standard WordPress size. - **CHANGE:** Clicking a row in the link list no longer highlights it. - **NEW:** The season status in Episoder is now a button that opens that season for editing, where its episodes are listed as well. - **NEW:** The episode count in Episoder opens the list of episodes already in the library, each one linking to its own entry. - **IMPROVE:** The Episoder window uses the full height of the screen. - **IMPROVE:** The Video Player metabox has been redesigned, with numbered rows, a wider field for the source and a clearer control to remove a row. - **IMPROVE:** Player rows renumber themselves when reordered, added or removed. - **IMPROVE:** The Links metabox now matches the Video Player metabox, and its inline editor has labeled fields with Delete separated from Save. - **IMPROVE:** Link lists load with far fewer database queries on entries with many links. - **FIX:** A player row with a source but no title was discarded when saving, without warning. - **FIX:** Player sources and link fields are validated and cleaned before being saved. - **FIX:** Opening the link editor no longer loses a language or quality value that is no longer listed in the theme settings. --- ### v2.5.22 `Aug 24, 2026` - **NEW:** IMDb ID and TMDb ID columns return to the Movies and TV Shows lists, each one linked to the title page on IMDb and TMDb. Both are hidden by default, enable them from Screen Options. - **NEW:** Ctrl + M updates every title on the current page of Movies or TV Shows, four at a time, with a confirmation before it starts and a progress bar while it runs. - **NEW:** The Featured column can now be sorted, and a Featured link above the list shows how many there are and filters the list down to them. - **NEW:** When a quick import URL belongs to a title already in the database, the notice links straight to it instead of only reporting the duplicate. - **NEW:** An interrupted bulk update is now reported on the Dbmovies screen, with a counter on the Metaupdater button, so there is no need to open the tool to find out that one was left unfinished. - **CHANGE:** The IMDb and Rating columns are now called IMDb ratings and User ratings. - **CHANGE:** The Tags column is hidden by default on Movies and TV Shows. Screen Options brings it back. - **IMPROVE:** Column headers no longer break into two lines, and the sorting arrows stay next to the title instead of dropping below it. - **IMPROVE:** The Spanish translation covers every new text in the admin. - **FIX:** Discarding an unfinished bulk update left the counter on the Metaupdater button until the page was reloaded. --- ### v2.5.21 `Aug 23, 2026` - **CHANGE:** The popular content widget refreshes every few minutes instead of being recalculated on every page view. The ranking itself is unchanged. - **IMPROVE:** The most viewed ranking is cached instead of being sorted from scratch on every visit. On a large catalog this was by far the most expensive query on the site. - **IMPROVE:** Similar titles and random listings still change between visits, but the selection comes from a cached group rather than a fresh database sort every time. - **IMPROVE:** When a genre carousel list expires, one visitor refreshes it while everyone else keeps seeing the previous list. - **IMPROVE:** Listings ordered by date are left uncached on purpose, so a newly published title still appears immediately. - **IMPROVE:** Clearing the cache from the toolbar now also clears these listings on sites running Redis or Memcached. - **FIX:** The importer search listed TV shows under their original title instead of the title in the configured language, so searching for an English title reported one result and appeared to display nothing. --- ### v2.5.20 `Aug 21, 2026` - **CHANGE:** Share buttons encode the page address and the title inside the link. - **CHANGE:** Link addresses are checked against a list of supported schemes before being rendered. Torrent links using `magnet:` keep working exactly as before. - **IMPROVE:** Values shown inside links, images, form fields and page text are escaped consistently across the whole theme, in the public pages and in the dashboard alike. - **IMPROVE:** The translation catalog covers 1607 strings, including the DooPlay Status screen, which had never been listed. Spanish is complete. - **IMPROVE:** Player sources, language flags, favicons and genre lists build their addresses correctly when a value contains a character that has to be encoded. - **FIX:** Titles containing a colon or an apostrophe are now shared correctly. - **FIX:** Ratings, episode names, season numbers, languages, qualities and file sizes display correctly when they contain characters such as `&`, `<` or a quotation mark. - **FIX:** The user name and biography shown on the public author page display correctly regardless of what they contain. - **FIX:** Counters across the account page, the author page and the link tables always render as numbers. --- ### v2.5.19 `Aug 21, 2026` - **IMPORTANT:** Priority update, recommended for every site. This release hardens how the theme handles values that come from a form, a link or the page address. We recommend installing it at your earliest convenience. - **CHANGE:** Link addresses are validated against a list of supported schemes before being rendered. Torrent links using `magnet:` keep working exactly as before. A link stored with an address the theme does not support now renders with an empty destination. - **CHANGE:** Share buttons send the page address encoded inside the link. - **IMPROVE:** Values shown inside links, images and form fields are escaped consistently across the theme, in both the public pages and the dashboard. - **IMPROVE:** Permalink slug settings are restricted to administrators and require a valid form submission. - **FIX:** Titles containing a colon or an apostrophe are now shared correctly. - **FIX:** The sign up form no longer loses what was typed when the page reloads without JavaScript. - **FIX:** Player language flags, favicons, share links and the genre lists build their addresses correctly when a value contains a character that has to be encoded. --- ### v2.5.18 `Aug 20, 2026` - **NEW:** Status screen at Appearance › DooPlay Status, with twelve checks on your installation: PHP version, license, database, links module and each of the seven required pages. - **NEW:** The required pages are watched. If one is deleted, sent to the trash, left as a draft or loses its DooPlay template, the status screen says so. Until now nothing did, and the matching link in the header quietly led to a missing page. - **NEW:** Four helpers for reading user ratings from your own templates: `doo_rating_average()`, `doo_rating_votes()`, `doo_rating_has()` and `doo_rating_box()`. - **IMPROVE:** Tested on WordPress 7.1. Every front page and admin screen was verified on it, and the theme now declares which version it was checked against. - **IMPROVE:** The theme no longer produces any deprecation warning on PHP 8. The last one appeared on every admin page load. - **IMPROVE:** The rating block on film, show and season pages is built directly instead of going through the shortcode parser on every page view. - **IMPROVE:** The ratings module no longer registers hooks left over from the plugin it came from, including integrations with three products DooPlay does not use. - **FIX:** A leftover function in the ratings module called code that does not exist. It was never reached, but it would have stopped a page from loading for anyone who hooked it up. --- ### v2.5.17 `Aug 18, 2026` - **CHANGE:** Template parts that a child theme had copied but that were previously ignored now take effect. If you copied one of these files into your child theme and it never seemed to do anything, it will start working after this update. Review those copies before updating a busy site. - **NEW:** Child themes can replace every front-end template part: the link countdown page, the login form, the episode navigator, the player and links editors, the comment scripts and the player library. Copy the file keeping the same path and your version is used. - **IMPROVE:** The TOP IMDb block makes roughly half the database queries it used to. Its cache was making it slower than having no cache at all. - **IMPROVE:** The home page modules no longer rebuild the page's main query once per module, and no longer ask the database to count the whole catalogue on every load. - **IMPROVE:** Each genre carousel stores about a hundred times less data in the options table. - **IMPROVE:** Changing the TOP IMDb settings now takes effect on the next page load instead of up to an hour later. - **IMPROVE:** The player page no longer stops loading if the player setting holds an unexpected value. - **FIX:** The home page could stop loading halfway through if a genre used by one of its carousels had been deleted. Everything below that point disappeared. - **FIX:** The Popular content widget left out most of the catalogue. With Visits, which is the default, it showed 13 titles out of 27. - **FIX:** The Popular content widget did not remember Likes. Reopening it showed Visits again. - **FIX:** The Related content widget listed the title the visitor was already reading, every time. - **FIX:** The TOP IMDb ranking reshuffled titles that share the same score whenever a title was imported or edited, so the list appeared to change order on its own. - **FIX:** Two genre carousels for the same genre shared one cache, so the second one showed the first one's titles. - **FIX:** A genre carousel without a title left broken markup on the home page. - **FIX:** The Featured titles block could stop the page from loading when the release year taxonomy was not available. - **FIX:** A public user profile showed no name at all. - **FIX:** The comment counter above the comment list stayed in English in every language. - **FIX:** The copyright year in the footer could be wrong on the last day of the year for sites ahead of UTC. - **FIX:** The banner and header code screen could be saved without administrator permission. That screen writes code that runs on every page of the site. - **FIX:** Theme notices about the license, the database and the required pages were shown to any logged-in user, including subscribers, with a link they could not use. - **FIX:** The sidebar content widget showed nothing until it was configured, instead of using its own defaults. --- ### v2.5.16 `Aug 16, 2026` - **CHANGE:** The `doo_postmeta_episodes` filter now runs. Episodes were previously passed to the seasons filter by mistake, so anything hooked to the seasons filter also received episode data and anything hooked to the episodes filter was never called. Child themes relying on the old behaviour must move their code to the right filter. - **CHANGE:** The admin notices that offer to generate the required pages or update the database now carry a security token. Old bookmarked links to those actions no longer work — use the notice. - **CHANGE:** Deleting a user rating now requires an administrator. It was previously available to anyone. - **NEW:** Importer settings — a gear in the importer sidebar opens eleven preferences: infinite scrolling and how many pages before it stops, a confirmation before a bulk import, how many failures in a row stop a run, a notice when a run finishes, hiding titles already in your library, poster size, and four options for the process log. - **NEW:** The importer process log survives a reload. It is kept for as many lines and days as you choose, instead of disappearing every time the screen reloads. - **NEW:** Discover remembers your choices. Every field except Page is kept, and a Reset link appears when anything differs from the defaults. - **NEW:** The results header stays in place. Progress and the run buttons remain reachable while the log grows, instead of scrolling out of view. - **IMPROVE:** The progress bar only shows while an import is running. - **IMPROVE:** The importer settings window always fits on screen, and its scrollbar only appears when the pointer is over it. - **FIX:** Ratings could be manipulated from outside the site. A visitor without an account could send values that pushed a title's score down to zero, create unlimited rows in the options table, or remove other people's votes. - **FIX:** A logged-in user could change the status of any post on the site, including sending an administrator's content to the trash, and could create published pages in bulk. - **FIX:** A visitor without an account could mark posts as featured. - **FIX:** After a correct login, the site could be made to send the visitor to an external address chosen by whoever prepared the form. - **FIX:** The links tables could be made to return content they should not, by tampering with the request. - **FIX:** Registration reported success even when the account had not been created, and sending the form without a password created an account that could never sign in. - **FIX:** Deleting the last rating of a title, or opening a title that had no ratings, could stop the page from loading. - **FIX:** Episode navigation could stop the page from loading on the first episode of a season. - **FIX:** In the database tool, running a process from a page that had been left open for too long wiped the record of every process ever run, and reported success anyway. --- ### v2.5.15 `Aug 14, 2026` Finishes the per-title update in the movie and TV show lists, and fixes an import that could leave the screen stuck when the connection dropped. No manual steps after updating. - **CHANGE:** The importer sidebar drops the back-to-top button and the themoviedb.org logo. - **NEW:** Refreshing a single title from the movie or TV show list now fills in its IMDb, Rating and Views columns on the spot. Before, you had to reload the page to see the new values. - **NEW:** A clear button empties the search box in the importer sidebar in one click. - **IMPROVE:** The Update button in the lists shows a spinner while it works and a check mark when it finishes, so it is clear which rows are still running. It stays locked for a few seconds afterwards to avoid spending credits on the same title twice. - **IMPROVE:** Search and Discover no longer read as one form. Search stays disabled until you type at least two characters, and Discover no longer fills the year with a random one — it starts empty. - **IMPROVE:** The results grid shows its shape while the first page loads, so the screen no longer jumps when titles arrive. - **IMPROVE:** The Load More button is wider and easier to find. - **IMPROVE:** Dbmovies has its own icon in the admin menu. - **FIX:** If the connection dropped during an import, the process log could mark a title that had been imported correctly as failed. - **FIX:** An import interrupted by a connection problem left the screen loading forever, with the buttons no longer responding. It now reports the failure and the screen goes back to normal. --- ### v2.5.14 `Aug 13, 2026` The import screen is rebuilt from the ground up, and importing finally tells you what it is doing while it does it. This version also raises the minimum WordPress and PHP the theme runs on, so check your server before updating. - **CHANGE:** DooPlay now requires WordPress 7.0 and PHP 8.1. A site below either one will not be able to activate the theme. - **NEW:** Redesigned import screen. Search, filters, the metadata updater and the process log move into a sidebar that stays in place while you scroll through results. - **NEW:** Import progress. Bulk import shows how many titles are done, how many failed, an estimate of the time left, and a button to stop a run without leaving the page. - **NEW:** Edit from the grid. Titles already in your library show an Edit button over the poster, and it opens that title ready to edit. - **NEW:** Endless results. The next page loads as you reach the bottom, and the Load More button is still there. - **IMPROVE:** Posters are all the same size, whatever proportion themoviedb.org serves them in. - **IMPROVE:** Titles already in your library are unmistakable at a glance, and say so in words. - **IMPROVE:** The process log reads as one line per title, with its status, its time and a link to edit it. - **IMPROVE:** The grid adapts to the real width of the screen, including when you collapse the admin menu. - **IMPROVE:** The import screen credits themoviedb.org with its logo. - **FIX:** Bulk import reported every successful import as failed. - **FIX:** Endless scrolling either never loaded the next page or loaded several at once, depending on how tall the results were. - **FIX:** The Edit link in the process log could not be clicked. - **FIX:** A failed import looked like any other line in the process log. - **FIX:** The Start button of the Meta Updater could disappear on sites upgraded from older versions. - **FIX:** Theme files could stay cached in the browser after an update, leaving parts of the screen running the previous version. --- ### v2.5.13 `Aug 12, 2026` A hotfix for the season and episode importer introduced in 2.5.12. Series whose episodes are numbered continuously across the whole show failed to import, and updating is recommended for every site running 2.5.12. - **FIX:** Importing a series whose episodes are numbered continuously across the whole show, instead of restarting at 1 in every season, failed on every episode with a "resource not found" message — the importer now reads the real episode numbers from themoviedb.org instead of assuming they start at 1. - **FIX:** The same problem affected the specials of many otherwise ordinary series, where a few episodes were requested that did not exist. - **FIX:** Refreshing the metadata of a season requested episodes that did not exist, for the same reason. --- ### v2.5.12 `Aug 12, 2026` A major release for the Dbmovies module. Importing seasons and episodes was rebuilt into a single window, the admin lists gained sorting and two new columns, and series pages load far fewer database queries. It also fixes a problem that could hide the episodes of a series that had them, and one that could create empty titles when themoviedb.org was unreachable. - **CHANGE:** Importing movies, seasons and episodes now requires an active theme license, the same way importing a series already did — the metadata updater requires one too. - **CHANGE:** The season list was removed from the series editor. The editor toolbar has a `Get seasons` button instead, which opens the import window. - **NEW:** Seasons and episodes are imported from a single window that runs on its own, with a progress bar and a log — it opens from the series list, the seasons list, the season editor and the series editor toolbar, and always shows the same thing. - **NEW:** An unfinished import can be resumed. Closing the tab in the middle of a run no longer loses it; the window offers to pick it up where it stopped. - **NEW:** The same window can request the metadata of seasons and episodes again, refreshing them without creating anything new. - **NEW:** Movie and series lists show an IMDb column with the rating and its number of votes. - **NEW:** A Metaupdater column adds an `Update` button on each row, to refresh that single title without opening the meta updater. - **NEW:** All four content lists can be sorted by rating and by views. Titles without a rating still appear in the list. - **IMPROVE:** Series pages load much faster — a series with 177 episodes went from 721 database queries to 10, and the number no longer grows with the size of the series. - **IMPROVE:** Episode images on series and season pages now load as you scroll, instead of all at once. - **IMPROVE:** When importing seasons and episodes, themoviedb.org is contacted by your server instead of by the browser, and the number of seasons is read from that answer rather than taken from the page. - **IMPROVE:** The Spanish translation is complete, and the License, Auto Embed and importer screens can now be translated into any language. - **IMPROVE:** After updating, the admin screens no longer need a browser cache refresh to look right. - **FIX:** A series could show no episodes at all even though its episodes were imported — this repairs itself the next time the page is visited, with nothing to do by hand. - **FIX:** Specials could never be imported. Season 0 was treated as an empty value and rejected before reaching themoviedb.org. - **FIX:** If themoviedb.org could not be reached while importing, empty seasons and episodes were created and published. Nothing is created now, and the message says the resource is unavailable instead of blaming the title. - **FIX:** An error from themoviedb.org, such as a blocked key or an exhausted quota, was reported as a successful import. - **FIX:** The `Get data` button in the editor did not refresh anything for movies, series, seasons or episodes unless the `Repeated` setting was on. - **FIX:** Episode titles in the import window could show a raw HTML code where the `x` between the season and the episode number should be. --- ### v2.5.11 `Aug 12, 2026` A follow-up to 2.5.10. It fixes two visible problems in the new metadata updater, adds a way to skip titles that were refreshed recently, and fixes a settings problem that has been there far longer. - **ADD:** A new `Skip recently updated` setting leaves out of the run any title refreshed less than the given number of days ago, so running the tool again is far cheaper than the first time — it is off by default, and the tool reports how many titles it left out. - **IMPROVE:** The metadata updater now waits between titles, using the same `Delay time` setting the importer already respected, so refreshing a large catalog no longer sends a continuous stream of requests to themoviedb.org — and the estimated time accounts for the wait. - **FIX:** Settings that come enabled could not be turned off: unchecking a box and saving appeared to work, but the setting came back on the next admin page load. This affected thirteen of the eighteen checkboxes in Dbmovies settings, so if you turned any of them off in the past, set them again. - **FIX:** The metadata updater window did not return to its normal state after stopping a run — the progress bar, the counters and the list stayed on screen. - **FIX:** The `Start`, `Pause` and `Stop` buttons were all visible at the same time while a run was in progress. - **FIX:** Stopping a run while a title was still being processed could put its result back on screen after the window had already been cleared. --- ### v2.5.10 `Aug 11, 2026` This release rebuilds the metadata updater, brings the options framework in-house together with a group of security fixes, and adds an hourly installation report. Updating is recommended for every site. - **IMPORTANT:** The theme now reports its installation to Doothemes once an hour — it sends the product identifier, the site domain, the administrator email address and the server IP address, and nothing about your content or your visitors; the full description is in the `readme.txt` file included in the package. - **IMPORTANT:** The metadata updater moved out of the panel header into its own window, and the content types to refresh are now chosen there instead of in the settings screen. - **ADD:** The metadata updater shows how many posts each content type has before you start, and while it runs it reports progress, how many succeeded and failed, the estimated time left, and every post it touches with the time it took and a link to edit it. - **ADD:** A run can be paused, resumed and stopped, and it survives closing the browser tab — reopening the tool offers to continue where it stopped, keeping everything already processed. - **ADD:** The package now includes a `readme.txt` describing the product, its requirements and exactly what the theme sends over the network. - **IMPROVE:** Pages load lighter — the options framework was loading 77 files on every visit to the public site for a panel that only exists in the WordPress admin. - **IMPROVE:** The admin panel is translated into more languages, and it now uses the same translation files as the rest of the theme, so translating DooPlay no longer means maintaining a second catalog that updates overwrite. - **IMPROVE:** The metadata updater progress bar follows your admin color scheme. - **FIX:** Several actions in the options framework ran without checking user permissions, and could reach settings that did not belong to the theme. - **FIX:** The metadata updater could skip titles — it re-queried the catalog between every post, so a post changing status during a run shifted the rest of the list. - **FIX:** The metadata updater could be started by any user allowed to edit posts, spending your themoviedb.org quota and your license credits. - **FIX:** Three settings kept loading on every visit to the site long after the tool that created them had finished. - **FIX:** The metadata updater settings no longer offer a `Method` option that did nothing, and its `Learn more` link, which pointed to a page that no longer exists, was removed. - **FIX:** A warning could appear during update checks when the response from WordPress.org did not include the expected data. --- ### v2.5.9 `Aug 10, 2026` A security and maintenance release for the Dbmovies module. Several admin actions could be reached by any registered user, and a number of errors that showed up while managing content are fixed. Updating is recommended for every site. - **CHANGE:** Admin actions now check user permissions before running — the importer, the metadata updater and the requests moderation are limited to users who can edit content. - **CHANGE:** The dashboard inbox widget is now shown only to users who can edit content, instead of to every logged in user. - **IMPROVE:** Front-end pages load less code, since the module no longer loads its admin classes on visits to the site. - **IMPROVE:** The Dbmovies styles and scripts load only on the screens that use them, instead of on every admin page. - **IMPROVE:** The contact and report forms, and the metadata updater, run lighter database queries than before. - **FIX:** Regenerating a title from the editor now updates its data — before it added a second copy of every field and kept showing the old values. - **FIX:** Seasons and episodes without an air date no longer show today's date as the release date. - **FIX:** The metadata updater no longer fails on sites with no published movies. - **FIX:** The content template set in Settings is now applied to imported titles on new installations. - **FIX:** Settings that accept a number can now be set to zero, instead of falling back to the default value. - **FIX:** The featured image is taken from the title being saved, so it is no longer skipped during quick edits. - **FIX:** Fields that contain HTML, such as the content template, no longer break the Settings form. - **FIX:** The gallery on a title page no longer breaks when the title contains a quote. - **FIX:** Random backdrops are now really random — one in every few page loads always showed the first image. - **FIX:** The importer reports a clear message when the theme license is not active, instead of an empty error. - **FIX:** The Dbmovies panel no longer links to a retired service. --- ### v2.5.8 `Aug 9, 2026` A maintenance release. It fixes an issue that could leave user lists looking empty right after updating, and clears the PHP notices that were filling error logs on sites running PHP 8. - **FIX:** Favorites and watched lists could appear empty right after updating, while the data was still moving to its new storage. - **FIX:** The error log no longer fills with PHP notices — sites on PHP 8 were getting dozens on every admin page load. - **FIX:** WordPress no longer reports that translations are loaded too early, a notice introduced in WordPress 6.7. - **IMPROVE:** Existing lists move to their new storage in larger batches, finishing in fewer visits to the admin on large catalogs. --- ### v2.5.7 `Aug 3, 2026` Auto Embed arrives: set up your video servers once and every title you import is served with its player options already in place. This release also cuts a large part of the database work behind title pages and user lists, so the site keeps its speed as the catalog grows. - **ADD:** Auto Embed — set up your video servers once and every imported title is served with its player options already filled in. - **ADD:** Placeholders for movies and episodes, using the title's IMDb or TMDb id, season and episode number. - **ADD:** Database cleanup tool that removes the old copy of the favorites data and tells you how many rows it will delete. - **CHANGE:** Your list is now sorted by when each title was added, newest first, instead of by release date. - **IMPROVE:** Title pages load with far fewer database queries — deciding which link tabs to show took around thirty and now takes one. - **IMPROVE:** Favorites and watched lists no longer scan the whole metadata table, so the account page stays fast as the catalog grows. - **IMPROVE:** Player sources are built when the page is served instead of being copied into every title, so changing a server applies everywhere at once. - **FIX:** View counts no longer lose visits when several people open the same title at the same time. - **FIX:** Link tabs no longer appear when the tab would be empty. - **FIX:** Reset User favorites and Reset User views now really clear every list, instead of reporting success while leaving them in place. --- ### v2.5.6 `Aug 3, 2026` The licensing system is rebuilt. The theme and Dbmovies now share a single license, activation happens in the WordPress admin, and updates install from your Dashboard. Coming from an earlier version, you will need to enter your license key once after updating. - **IMPORTANT:** Licenses from earlier versions are not carried over — enter your key once in Appearance › Licenses after updating. - **IMPORTANT:** The license is now tied to a domain, so deactivate it before moving your site to a different one. - **CHANGE:** Dbmovies no longer has its own API key — the theme license enables importing and IMDb data, and the old key is removed automatically. - **CHANGE:** The Dbmovies screen now requires an active license and redirects to the license page instead of failing on the first import. - **ADD:** License page showing your license status, the domain it is activated on, your daily request usage and the expiration date. - **ADD:** Automatic updates — new versions appear in your Dashboard and install from there, with no manual download. - **ADD:** Release notes for each version, opened from the update details link. - **IMPROVE:** Title metadata and images load directly from TMDb instead of going through an intermediate server. - **IMPROVE:** The import screen shows how many requests are left on your license while importing. - **IMPROVE:** IMDb ratings, certification and country are requested with the title type, so movies and shows sharing an identifier are no longer mixed up. ## FAQ ### Does DooPlay come with movies or video files? No. DooPlay is the software that runs your site — the catalog, the player, the user accounts. It does not include, host or provide any video content, and it does not come with video servers configured. What you publish and where you get it from is your responsibility. ### What does it import, then? Metadata and artwork: titles, synopsis, cast, directors, genres, ratings, runtime, release dates, posters and backdrops. The information you'd otherwise type by hand for every title. ### Do I need to know how to code? No. Everything is configured from the WordPress settings screen. Knowing your way around WordPress helps, but you never have to open a file. ### Can I use it on an existing WordPress site? Yes. It installs like any theme. Your existing posts and pages stay where they are — DooPlay adds its own content types for movies and shows alongside them. ### Can I customize the design? Yes, and you should use a child theme for it, as with any WordPress theme. That way your changes survive updates. ### How many sites can I use one license on? You can activate all the sites that your license allows; each tier has its own limitations. ### Can I move my site to another domain? Yes. Deactivate the license on the old domain and activate it on the new one. It takes a minute and doesn't touch your content. Development and staging domains follow the same rule, so deactivate before you tear one down. ### What happens when my license expires? Your site keeps working and your content stays intact. What stops is access to updates and to the metadata service, which is what powers importing. ### Do I get updates? Yes. New versions show up in your WordPress dashboard with the release notes attached — read what changed, press update. ### How do I add the videos for each title? Two ways, and you can combine them. Add links by hand to any title, organized by type — streaming, download, torrent or purchase — each with its quality and language. Or set up Auto Embed once and let every imported title arrive with its player options already filled in. ### What exactly is Auto Embed? You give DooPlay the address format your video server uses, with a placeholder where the title's id goes. From then on, every title you import serves that source automatically. Change the server later and it applies to your whole catalog at once, with nothing to re-import. ### Can my visitors create accounts? Yes. Registered users keep their own favorites and watched lists, rate titles, and can request the ones they want added. ### Is it good for SEO? DooPlay outputs structured data, so search engines read your titles as titles — with their ratings, cast and release dates — rather than as generic posts. ### Can I translate it? It ships in English, Spanish, French, German and Turkish, and includes the translation files to add any other language. ### Will it work on shared hosting? Yes, provided your host allows outbound HTTPS connections — that's what importing and updates need. Some very restrictive hosts block them. ### How many titles can it handle? Large catalogs are the normal case. Version 2.5.7 specifically reduced the database work per page: a title page went from around thirty queries to one, and user lists moved to a dedicated indexed table so they don't slow down as the library grows. ### Does it work with caching plugins? DooPlay has its own persistent cache for the heavy work and doesn't conflict with page caching. If you use one, exclude the account pages and any logged-in view, as you would with any site that has user accounts. ### Which PHP version do I need? PHP 8.1 or higher. It runs clean on PHP 8.3.9 with no deprecation notices. # Dbmovies Source: https://doothemes.com/items/dbmovies - Type: Plugin - Version: 1.3.17 (released Aug 6, 2026) - Demo: https://demo.wovie.co - Documentation: https://doothemes.com/docs/dbmovies - WP Required: 7+ - WP Tested: 7.1 ## Pricing - **Regular License** — $69 · 1 year · 1 site · 5,000 API requests/day - **Extended License** — $129 · 1 year · 2 sites · 10,000 API requests/day - **Lifetime License** — $299 · lifetime · 2 sites · 20,000 API requests/day --- ## Overview **Dbmovies turns WordPress into a complete movie and TV streaming platform.** It runs everything behind a modern VOD site — building your catalog, engaging your audience, and monetizing it — without stitching together a dozen plugins or writing a single line of code. Pull movies and shows straight from TMDB in seconds, complete with posters, cast, trailers, and rich metadata ready to publish. Give your visitors real accounts with watchlists, ratings, and content requests. And keep full control of your streaming sources and links from one clean, fast admin. When traffic is ready to pay off, Dbmovies has the monetization built in — memberships and advertising — so your platform earns from day one. Designed for performance and made to be deployed in production, Dbmovies pairs seamlessly with the Wovie theme for a turnkey streaming experience your audience will actually enjoy using. ## Features ### Content & Importing - One-click import of movies and TV shows from TMDB — posters, backdrops, cast, trailers, genres, and full metadata. - Episode and season management for TV shows, with per-episode streaming sources. - Bulk tools to keep your catalog fresh: batch metadata updater and link-health analyzer. - Collections to group titles into curated sets. ### Audience & Engagement - Full user accounts: registration, login, and secure two-step email change via OTP. - Personal watchlists ("My List"), star ratings, and a content-request system so users can ask for new titles. - Threaded comments with reactions. - Account area: profile, phone, active-session management, and billing history. ### Streaming Sources - Centralized management of streaming and download links per title and per episode. - Quality and language badges, server labels, and link status control. - Secure, unique hashed identifiers for every source. ### Monetization - Built-in memberships / premium subscriptions with manual or gateway-ready activation. - Payments tracking and per-plan pricing with tax support. - Native ad management for in-site campaigns. ### Built for Operators - Clean, fast admin with shortcuts and pending-action notifications in the toolbar. - Public REST API for headless and integrations. - Pairs seamlessly with the Wovie theme for a complete front end. - Licensed updates delivered straight to your dashboard. ## Requirements ### Server - WordPress 6.0 or higher - PHP 8.1 or higher - MySQL 5.7+ / MariaDB 10.3+ - `mod_rewrite` enabled (pretty permalinks) ### Configuration - A free TMDB API key (for importing titles and artwork) - Outbound HTTPS access (to reach TMDB and the update server) - A valid Dbmovies license key (to receive updates and support) ### Recommended - The Wovie theme, for a ready-to-launch streaming front end - Object caching (Redis / Memcached) and a CDN for image delivery on high-traffic sites # Wovie Source: https://doothemes.com/items/wovie - Type: Theme - Version: 1.2.16 (released Aug 6, 2026) - Requires: [Dbmovies](https://doothemes.com/items/dbmovies) - Demo: https://demo.wovie.co - Documentation: https://doothemes.com/docs/wovie - WP Required: 7+ - WP Tested: 7.1 ## Pricing - **Regular License** — $59 · 1 year · 1 site · 5,000 API requests/day - **Extended License** — $109 · 1 year · 2 sites · 10,000 API requests/day - **Lifetime License** — $239 · lifetime · 2 sites · 20,000 API requests/day --- ## Overview **Wovie is the front-end that makes your streaming site feel like a real product.** It takes the catalog powered by Dbmovies and turns it into a fast, polished, app-like experience your audience will want to come back to — no design work, no custom development. From the home page to the player, every screen is built for browsing: cinematic title pages with trailers, seasons and episodes, instant search, and a private account area where users manage their watchlist, ratings, requests, and membership. Dark, modern, and fully responsive, Wovie is tuned for speed on every device and ready to translate into any language. Pair it with Dbmovies and you have a complete streaming platform you can launch today. ## Features ### Browse & Discover - Cinematic home page with content carousels, "Most viewed" rankings, and curated collections. - Instant live search, plus modal and voice search. - Movie and TV archives with filtering and infinite scroll. ### Title Pages - Rich detail pages with backdrop hero, trailer, cast, and metadata. - Seasons and episodes browser with a fast episode/sources drawer. - Watch and download modals with quality and language options. - "Continue watching" and recently viewed tracking. ### User Account Area - Personal dashboard with membership status at a glance. - My List, Ratings, and a content-request flow. - Account settings: profile, email, password, phone, and active sessions. - Membership and billing history. ### Engagement - Threaded comments with reactions and an emoji picker. - One-tap add-to-list and rating widgets across the site. ### Design & Performance - Modern dark UI, fully responsive, mobile-first. - FontAwesome 7 Pro icons included. - Optimized, bundled assets (SCSS + ES modules) for fast loads. - Fully translatable (i18n-ready) and customizer options. ## Requirements ### Required - WordPress 6.0 or higher - PHP 8.1 or higher - [The Dbmovies plugin](https://doothemes.com/item/dbmovies) (Wovie is the front-end for it and depends on it) - A modern browser (Chrome, Firefox, Safari, Edge — current versions) ### Recommended - Pretty permalinks enabled - A CDN for image delivery and object caching on high-traffic sites # Cookie Preferences > This page explains how Doothemes, operated by EWS Networks, uses cookies and similar technologies, the categories of cookies we use, and how you can review and manage your cookie preferences at any time. Source: https://doothemes.com/p/cookie-preferences --- ## 1. About This Page This Cookie Preferences page describes how we use cookies and similar technologies across the Doothemes website at **doothemes.com** and our related services (the "Services"), and how you can control them. It should be read together with our [Privacy Policy](https://app.doothemes.io/p/privacy-policy), which explains in more detail how we handle your personal information. --- ## 2. What Are Cookies Cookies are small text files that are placed on your device when you visit a website. They are widely used to make websites work, to make them work more efficiently, and to provide information to the site owners. Similar technologies, such as pixels, tags, and local storage, perform comparable functions, and in this page we refer to all of them as "cookies". --- ## 3. Why We Use Cookies We use cookies to operate and secure the Services, to remember your settings and keep you signed in, to process orders and downloads, to understand how the Services are used, and to improve your overall experience. Some cookies are essential for the website to function, while others are optional and used only with your consent where required by law. --- ## 4. Categories of Cookies We Use We group the cookies we use into the following categories: - **Strictly necessary cookies** — enable core functions such as login, cart, and checkout. Examples include session and authentication cookies. The Services cannot function properly without them, so they cannot be switched off. - **Functional cookies** — remember your preferences and settings, such as language and display options, to provide a more personalized experience. - **Analytics cookies** — help us measure traffic and improve the Services through aggregated page-view statistics and usage data. - **Marketing cookies** — measure campaign performance and relevance, such as conversion and referral tracking. --- ## 5. First-Party and Third-Party Cookies Some cookies are set directly by us (first-party cookies), while others are set by third-party services that we use, such as payment providers, analytics providers, and content delivery networks (third-party cookies). These third parties process cookie data in accordance with their own privacy and cookie policies, which we encourage you to review. --- ## 6. How Long Cookies Last Cookies may be either **session cookies**, which are temporary and deleted when you close your browser, or **persistent cookies**, which remain on your device for a set period or until you delete them. The duration of each cookie depends on its purpose. --- ## 7. Managing Your Cookie Preferences You can review and change your cookie choices at any time using the methods below: - **Cookie settings on our website** — where a cookie banner or preferences tool is available, you can accept or decline non-essential cookies and update your choices whenever you wish. - **Browser settings** — most browsers allow you to view, manage, block, or delete cookies. You can usually find these controls in the settings or privacy menu of browsers such as Google Chrome, Mozilla Firefox, Apple Safari, and Microsoft Edge. Please refer to your browser's help resources for specific instructions. - **Opting out of analytics and marketing** — you may decline analytics and marketing cookies through our cookie controls or your browser settings without affecting the core functionality of the Services. --- ## 8. Consequences of Disabling Cookies You are free to disable cookies, but please note that strictly necessary cookies are required for the Services to work. If you block or delete these cookies, some features, such as logging in, completing a purchase, or downloading products, may not function correctly. Disabling functional, analytics, or marketing cookies will not prevent you from using the Services, but your experience may be less personalized. --- ## 9. Changes to This Page We may update this Cookie Preferences page from time to time to reflect changes in the cookies we use or in legal requirements. When we make material changes, we will update the "Last Updated" date above. Your continued use of the Services after the changes take effect constitutes your acceptance of the updated page. --- ## 10. Contact Us If you have any questions about how we use cookies, please contact us: - **Company:** EWS Networks - **Website:** doothemes.com - **Email:** info@doothemes.com # Dbmovies moved: one line to fix 2.5.5 Source: https://doothemes.com/p/dbmovies-moved-one-line-to-fix-2-5-5 --- The old Dbmovies service at `api.dbmvs.com` **has been shut down**. If you are staying on **DooPlay 2.5.5**, you do not need to update the theme — you need to change one line so it talks to our new server instead.This takes about two minutes. ## What you get, and what you don't The new endpoint serves the IMDb data from our current system: | | | |---|---| | ✅ IMDb rating and vote count | live, refreshed daily | | ✅ Title, year and content rating | | | ❌ Poster, trailer, runtime, budget, country, TMDb votes | **not included** | The old server made a second call to TMDb to fill those in. The new one does not, so those fields come back empty and DooPlay will fall back to what it already has. **This matters for imports.** Titles you import from now on will come in **without a poster and without a trailer** unless you have TMDb configured in DooPlay, which fills them from its own side. Titles already in your library are not touched. --- ## Before you start You need two things: 1. **Your license key**, from [your licenses page](https://doothemes.com/account/licenses). It is a long string of letters and numbers, and it is the same key you already use for DooPlay itself — you do not need a separate one. 2. **FTP or file manager access** to your site. > Back up `inc/core/dbmvs/init.php` before editing. One copy, thirty seconds, and you can always undo it. --- ## Step 1 — Edit one line Do this **before** touching the key in WordPress. The order matters, and the next step explains why. Open this file: ```file-path wp-content/themes/dooplay/inc/core/dbmvs/init.php ``` Find **line 32**. It looks like this: ```php define('DBMOVIES_DBMVAPI','https://api.dbmvs.com'); ``` Replace it with this, putting **your own license key** at the end: ```php define('DBMOVIES_DBMVAPI','https://edge.wupdater.com/dbmvs/{{YOUR-DOOPLAY-LICENSE-KEY}}'); ``` So if your key were `a1b2c3d4…`, the line would read: ```php define('DBMOVIES_DBMVAPI','https://edge.wupdater.com/dbmvs/a1b2c3d4e5f6a7b8c9d0'); ``` Save the file. That is the whole change. > **No trailing slash** at the end, and keep the quotes exactly as they are. Everything else in the file stays untouched. --- ## Step 2 — Put your license key in Dbmovies In WordPress, go to **Dbmovies → Settings → General** and paste your license key into the **API key for Dbmovies** field. Save. If you already had a key there from the old service, replace it with your license key. ### If the field shows up red Dbmovies checks your key once and **remembers the answer for an hour**. If you saved the key before editing `init.php`, that check ran against the old dead address, and the red border will stay for up to an hour even though everything is already working. Do not re-save the key — saving the same value does not clear it. Instead: **Tools → DooPlay Database → Clear Transient options → Run process.** Reload the settings page and the field turns green. This is also why Step 1 comes first: do it in that order and you never see the red. --- ## Step 3 — Check that it worked Open this URL in your browser, with your key in it: ```endpoint https://edge.wupdater.com/dbmvs/{{YOUR-DOOPLAY-LICENSE-KEY}}?auth=1 ``` You should see something like: ```json {"status":1,"credits":9985,"requests":41,"unlimited":0,"used_credits":41,"free_credits":false} ``` `"status":1` means you are connected. `credits` is how many requests you have left today. Then go back to WordPress, open **Dbmovies** in the admin menu, and reload. The status should read as active and the counters should fill in. --- ## If DooPlay itself shows the license as inactive This is a **separate** thing from the steps above, and you may not need it at all. The change you just made fixes Dbmovies. The theme's own license check is a different connection. DooPlay 2.5.5 validates its license against our old repository. If your server cannot complete that connection, the status never turns valid — you get the "Please activate a valid license" notice, and the theme's licensed features stay locked even though your license is perfectly fine. The theme ships with a built-in fallback for exactly this. It is not hidden and it is not a workaround we are inventing today; it has been in the Database tool since 2.5.0. **1.** Go to **Appearance → DooPlay license** and paste your license key into the field, then save. Do this even if the activation fails — the next step needs the key to be present. **2.** Go to **Tools → DooPlay Database**. **3.** A box titled **Force license activation** appears, with the note *"This measure is required when your server does not complete the connection with our repository."* Click **Activate license**. **4.** Reload the admin. DooPlay now reports the license as active and its features unlock. > **The box only appears if a key is saved and the status is empty.** If you do not see it, either the field is blank (go back to step 1) or the license already validated normally — in which case there is nothing to fix. This does not contact any server. It writes the "valid" status locally, on your own site, which is what lets a paid install keep working while our infrastructure moves. **It sticks.** Nothing reverts it on its own — not the updater, not a WordPress update. There is exactly one thing that clears it: **changing the key** in the license field. The theme treats a different key as a new license and wipes the status, so if you edit that field later you will need to force it once more. Saving the same key again changes nothing. --- ## If you applied the TMDb bypass modification Skip this unless you know you applied it. It was an optional modification we published years ago, never part of DooPlay itself. When TMDb blocked API access from servers in certain regions, we published a change that routed those calls through our own server so the affected sites could keep working. It added a constant named `DBMOVIES_BYPASS`. **That mirror is now closed.** The good news is that you do not have to go looking for it: the constant sits in **the same file you edited in Step 1**, a few lines from the one you already changed. Set it to `false`: ```php define('DBMOVIES_BYPASS', false); ``` If you do not see a `DBMOVIES_BYPASS` line in that file, you never applied the modification and there is nothing to do here. Your site then talks to `api.themoviedb.org` directly, the way DooPlay does out of the box. If TMDb answers from your server, that is the end of it. **If TMDb still does not answer**, you are back in the exact situation the modification existed for. Be aware of what that means before you start debugging: nothing is broken on your side, and no amount of retrying will help — the block is on TMDb's end and it is geographic. We do run a replacement mirror, but **DooPlay 2.5.5 cannot use it**: it authenticates with a request header that the old theme never sends, and no constant can add one. The way out is the current version of DooPlay, which talks to it natively. Open a ticket and we will help you plan the move. --- ## Optional: faster bulk imports Skip this if you do not import hundreds of titles at a time. Everything works without it. When DooPlay imports a movie it asks TMDb first, then asks us for the IMDb rating — but it does not pass along the TMDb id it already has, so we have to resolve it again on our side. That costs about 200 ms per movie: on a 500-title import, a minute and a half of waiting for nothing. One line fixes it. Open: ```file-path wp-content/themes/dooplay/inc/core/dbmvs/classes/importers.php ``` Find this block, around line 121: ```php $imdb_args = array( 'key' => $this->dbmvkey, 'imdb' => $imdb_id ); ``` Add the `tmdb` line, and mind the new comma after `$imdb_id`: ```php $imdb_args = array( 'key' => $this->dbmvkey, 'imdb' => $imdb_id, 'tmdb' => $tmdb ); ``` That is all. It only affects movies — TV shows never use this endpoint. Back this file up too before editing. --- ## Troubleshooting | What you see | What it means | |---|---| | `{"status":0,"error":"API Key invalid"}` | The key in the URL is wrong. Copy it again from [your licenses page](https://doothemes.com/account/licenses) — no spaces, no line breaks. | | `{"error":"Api key invalid or blocked"}` | Same as above, or the license is expired or disabled. | | `{"error":"Insufficient Credits"}` | You have used your daily allowance. It resets each day. | | `{"response":false}` | That specific title could not be resolved. Other titles will still work. | | The **API key for Dbmovies** field is red | A cached check from before the edit. **Tools → DooPlay Database → Clear Transient options**, then reload. Re-saving the same key does not clear it. | | Nothing changes in the admin | Clear any full-page cache and hard-reload (Ctrl+Shift+R). DooPlay caches the status check for one hour. | | A blank white screen after editing | The file has a typo. Restore your backup and try again — the most common cause is a missing quote or semicolon. | | "Please activate a valid license" from the theme | That is the theme's own license check, not Dbmovies. See the section above. | | The license went back to inactive | You changed the key in the license field, which clears the forced status. Force it again. | --- ## Questions people ask **Do I have to update DooPlay?** No. That is the point of this change. 2.5.5 keeps working. **Will a theme update undo this?** Yes. `init.php` is a theme file, so updating DooPlay overwrites it and you would have to redo the edit. If you are staying on 2.5.5, this will not come up. **Can I do this from a child theme instead?** Not cleanly. The constant is defined without a guard, so overriding it from a child theme works but makes PHP log a warning on every single request. Edit the file. **How many requests do I get?** Your license's daily allowance — the same one your site already uses, and it is generous: the smallest plan allows thousands of lookups a day. You can see exactly what is left at any moment with the `?auth=1` URL from Step 3. It is measured per day, not per month, and it resets daily. **Does checking my balance use up requests?** No. Only actual title lookups count. **My posters stopped coming in.** That is expected — see the table at the top. Configure TMDb in **Dbmovies → Settings** if you have not already, and DooPlay will pull images from there. --- ## If you would rather move forward This endpoint exists so nothing breaks while you decide, not as a permanent home. The current version of DooPlay talks to the new platform directly, with no manual edits and no license key in a URL. When you are ready to move, everything you import will come back complete. Until then, this keeps 2.5.5 running. # License limited > You are most likely here from a LICENSE file in one of our public repositories. That file is a real MIT license and it means what it says — but it covers only the code in that repository. This page draws the line, so nobody has to guess where it falls. Source: https://doothemes.com/p/license-limited --- ## The short version The repository is free and open. **The product it extends is not.** What we publish openly are the pieces meant to be taken apart and rebuilt: child themes, add-ons, examples, starting points. None of them is a product on its own. They extend software we sell, and they need that software installed to do anything at all. Having the repository does not give you the product, and nothing in it changes the terms that came with a purchase. ## What the MIT license gives you For the files in that repository, and only those: - **Use it** for anything, personal or commercial. - **Change it** however you like. Fork it, rewrite it, strip it down. - **Redistribute it**, on its own or inside something larger. - **Sell what you build with it.** We take no cut and ask for no permission. - **No attribution** beyond keeping the copyright notice in the copies you distribute. That is the whole MIT license. We chose it deliberately: this is code meant to be modified. Putting conditions on how you adapt your own site would be a strange thing for us to do. ## What it does not give you - **A copy of the product it extends**, or any right to one. - **Permission to redistribute that product**, bundled with this code or otherwise. - **Any change to your purchase terms.** The MIT notice sits beside them; it does not override, weaken or extend them. The two licenses cover different software. Neither one says anything about the other. ## Questions this usually raises **It is on GitHub, so the product is free now?** No. What is on GitHub is the open piece we wrote and released. The product it extends is separate, has its own terms, and is not published there. **Can I sell what I build on top of this?** Yes. What you build is yours to sell. Bear in mind what you are selling: your customer still needs their own license for the underlying product for it to run, and that should be clear to them before they buy — not after. **Can I ship the product with it so my customer does not need a license?** No. That is redistributing commercial software, and the MIT notice on our open code does not authorize it. **What happens if I install this without a license for the product?** Not much. The code loads and does nothing, because the software it extends is not there. And any feature that talks to our servers only answers to a valid license — so a copy obtained elsewhere cannot pull data from us regardless of what else it appears to do. **I already own the product. Do I need anything else to use this?** No. Download it, install it, and go. ## Where the actual terms live This page explains a boundary; it is not the agreement itself. - The terms for your purchase: [Terms of Service](https://doothemes.com/p/terms-of-service) - The MIT text that applies to the repository: the `LICENSE` file inside it If something here reads as contradicting either document, the documents win — and we would like to know about it. [Open a ticket](https://doothemes.com/account/tickets/new) and we will fix the wording. # Privacy Policy > This Privacy Policy explains how Doothemes, operated by EWS Networks, collects, uses, shares, and protects your personal information when you visit our website, create an account, purchase and download our WordPress themes, receive automatic updates, or use our support community. Source: https://doothemes.com/p/privacy-policy --- ## 1. Introduction This Privacy Policy ("Policy") describes how **EWS Networks** ("EWS Networks", "Doothemes", "we", "us", or "our") handles personal information in connection with the website located at **doothemes.com** and any related subdomains, services, products, and digital downloads (collectively, the "Services"). Doothemes provides premium WordPress themes and related software, customer accounts, theme licensing, automatic updates, and a support community for verified customers. By accessing or using the Services, you acknowledge that you have read and understood this Policy. If you do not agree with it, please do not use the Services. This Policy applies to all users of the Services, regardless of how you access them. It does not apply to third-party websites, products, or services that we do not own or control, even when they are linked from our Services. --- ## 2. Information We Collect We collect information in three ways: information you provide directly to us, information collected automatically when you use the Services, and information we receive from third parties such as payment processors. ### 2.1 Information You Provide to Us You may provide the following information directly when you register, make a purchase, request support, or otherwise interact with us: - **Account information** — name, username, email address, and password. - **Billing and contact details** — billing name, billing address, country, and, where applicable, tax or company identification numbers. - **Order and license information** — the products you purchase, license keys issued to you, and the domains on which you activate your themes. - **Support communications** — the content of support tickets, forum posts, comments, and any messages, attachments, or site details you share with our team or community. - **Marketing preferences** — your choices regarding newsletters and promotional communications. ### 2.2 Payment Information When you make a purchase, your payment is processed by third-party payment providers. We do **not** collect or store your full credit or debit card numbers on our own servers. The payment processor collects and handles your card data in accordance with its own privacy policy and applicable security standards (such as PCI-DSS). We may receive limited transaction details, such as a confirmation of payment, the last digits of the card, the payment method, and the billing country. ### 2.3 Information We Collect Automatically When you use the Services, we and our service providers may automatically collect: - **Device and connection data** — IP address, browser type and version, operating system, device identifiers, and language settings. - **Usage data** — pages visited, links clicked, referring URLs, search terms used on our site, dates and times of access, and other interaction data. - **License and update data** — when your WordPress installation checks for theme updates, we may receive your license key, the associated domain, the theme version installed, and basic environment information needed to deliver compatible updates. - **Log data** — server logs that record technical events for security, debugging, and performance monitoring. ### 2.4 Cookies and Similar Technologies We use cookies and similar technologies to operate the Services, remember your preferences, keep you signed in, and analyze usage. The main categories are described below. - **Strictly necessary cookies** — enable core functions such as login, cart, and checkout. Examples include session and authentication cookies. - **Functional cookies** — remember your preferences and settings, such as language and display options. - **Analytics cookies** — help us measure traffic and improve the Services through aggregated page-view statistics. - **Marketing cookies** — measure campaign performance and relevance, such as conversion and referral tracking. You can manage or disable cookies through your browser settings or, where available, through the cookie controls on our website. Disabling certain cookies may affect the functionality of the Services. See **Section 12** for more details on managing cookies. --- ## 3. How We Use Your Information We use the information we collect for the following purposes: - To create and manage your account and authenticate your access. - To process orders, deliver digital products, issue and verify license keys, and provide automatic theme updates. - To provide customer support and operate our support community. - To send transactional messages such as order confirmations, license details, security alerts, and important service notices. - To send marketing communications and newsletters where you have opted in or where otherwise permitted by law, with an option to unsubscribe at any time. - To maintain the security and integrity of the Services, detect and prevent fraud, abuse, license violations, and unauthorized access. - To analyze and improve the Services, develop new features, and understand how our products are used. - To comply with legal obligations, enforce our terms, and protect our rights and the rights of our users. --- ## 4. Legal Bases for Processing If you are located in the European Economic Area (EEA), the United Kingdom, or another jurisdiction with similar requirements, we process your personal information on one or more of the following legal bases: - **Performance of a contract** — to deliver the products and services you have requested, including downloads, updates, and support. - **Legitimate interests** — to secure, maintain, and improve the Services, prevent fraud, and communicate with you about your account, provided these interests are not overridden by your rights. - **Consent** — for optional activities such as marketing communications and certain cookies, which you may withdraw at any time. - **Legal obligation** — to comply with applicable laws, tax requirements, and lawful requests from authorities. --- ## 5. How We Share Your Information We do not sell your personal information. We share it only in the following circumstances: - **Service providers** — with vendors who perform services on our behalf, such as payment processing, hosting, content delivery, email delivery, analytics, and customer support tools. These providers may access personal information only to perform their tasks and are required to protect it. - **Legal and safety reasons** — when required by law, regulation, legal process, or governmental request, or when necessary to protect the rights, property, or safety of EWS Networks, our users, or others. - **Business transfers** — in connection with a merger, acquisition, financing, reorganization, or sale of assets, in which case personal information may be transferred as part of that transaction, subject to this Policy. - **With your direction** — when you choose to share information publicly, such as in forum posts or community comments, or otherwise authorize us to disclose it. --- ## 6. Third-Party Services The Services rely on trusted third parties to function, including providers for payment processing, web hosting and infrastructure, email and transactional messaging, and traffic analytics. Each third party processes data under its own privacy policy and security practices. We encourage you to review the privacy policies of any third-party service you interact with through us. --- ## 7. Theme Updates and License Verification To deliver automatic updates and verify entitlement, our update system may periodically communicate with your WordPress installation. During these checks, we may receive your license key, the registered domain or site URL, the installed theme and version, and basic technical details required to provide a compatible update. This information is used solely to validate your license, deliver updates, prevent unauthorized use, and provide support. It is retained only as long as necessary for these purposes. --- ## 8. Data Retention We retain personal information for as long as your account is active or as needed to provide the Services. We also retain information as required to comply with our legal obligations, resolve disputes, enforce our agreements, maintain security, and keep accurate financial and transaction records. When information is no longer required, we delete it or anonymize it using reasonable measures. --- ## 9. Data Security We implement technical and organizational measures designed to protect personal information against unauthorized access, alteration, disclosure, or destruction. These measures include encryption in transit, access controls, and secure infrastructure. However, no method of transmission over the Internet or method of electronic storage is completely secure, and we cannot guarantee absolute security. You are responsible for keeping your account credentials confidential and for notifying us of any suspected unauthorized use of your account. --- ## 10. International Data Transfers EWS Networks operates internationally, and your information may be processed and stored in countries other than the one in which you reside, including countries that may have different data-protection laws. When we transfer personal information across borders, we take steps to ensure that an appropriate level of protection is maintained in accordance with applicable law. --- ## 11. Your Privacy Rights Depending on your location, you may have some or all of the following rights regarding your personal information: - **Access** — request a copy of the personal information we hold about you. - **Rectification** — request correction of inaccurate or incomplete information. - **Erasure** — request deletion of your personal information, subject to legal exceptions. - **Restriction** — request that we limit the processing of your information in certain circumstances. - **Portability** — request a copy of certain information in a structured, machine-readable format. - **Objection** — object to processing based on our legitimate interests, including direct marketing. - **Withdraw consent** — withdraw consent at any time where processing is based on consent. If you are a California resident, you may also have the right to know what personal information we collect, to request its deletion, and to opt out of any sale of personal information. We do not sell personal information. We will not discriminate against you for exercising any of these rights. To exercise any of these rights, please contact us using the details in **Section 16**. We may need to verify your identity before responding, and we will respond within the timeframe required by applicable law. --- ## 12. Managing Cookies You can control cookies through your browser settings, where you can usually delete existing cookies, block new ones, or be alerted when cookies are set. You may also use any cookie-preference controls provided on our website. Please note that blocking strictly necessary cookies may prevent parts of the Services, such as login and checkout, from working properly. --- ## 13. Third-Party Links The Services may contain links to third-party websites, plugins, or services that are not operated by us. This Policy does not apply to those third parties, and we are not responsible for their content or privacy practices. We encourage you to review the privacy policy of every website you visit. --- ## 14. Children's Privacy The Services are intended for users who are at least 18 years old, or the age of majority in their jurisdiction. We do not knowingly collect personal information from children. If you believe a child has provided us with personal information, please contact us, and we will take appropriate steps to delete it. --- ## 15. Changes to This Privacy Policy We may update this Policy from time to time to reflect changes in our practices, technologies, legal requirements, or other factors. When we make material changes, we will update the "Last Updated" date above and, where appropriate, provide additional notice. Your continued use of the Services after the changes take effect constitutes your acceptance of the revised Policy. --- ## 16. Contact Us If you have any questions, concerns, or requests regarding this Privacy Policy or your personal information, please contact us: - **Company:** EWS Networks - **Website:** doothemes.com - **Email:** [privacy@doothemes.com] We will do our best to address your inquiry promptly and in accordance with applicable law. # Refund Policy > Doothemes, operated by EWS Networks, sells downloadable digital products and, as a general rule, does not offer refunds. This policy explains the limited circumstances in which a refund may be considered, the difference between a defective product and a configuration issue, and the steps you should take before requesting a refund. Source: https://doothemes.com/p/refund-policy --- ## 1. We Do Not Offer Refunds Doothemes does not issue refunds. We will only consider doing so in very specific circumstances, such as a duplicate (double) payment or a product that was never downloaded after the purchase was completed. Because our products are digital and downloadable, completing the download means you have taken ownership of the product, and no refund option will be available from that point onward. --- ## 2. Before You Complete a Purchase Before purchasing any of our products, we strongly recommend that you raise and resolve all of your questions in advance. Our products are delivered as digital downloads, and by completing the download you take full ownership of the product without any refund option. If you have any doubts about whether a product fits your needs, please contact our sales team before buying. Our agents will gladly help you review the product specifications so you can make an informed decision. --- ## 3. Defective Product vs. Configuration Issues Please note that there is an important difference between a defective product and an incorrect configuration of the product. In most cases, error messages are caused by an inadequate server configuration that prevents the product from working correctly, rather than by a defect in the product itself. Before assuming a product is defective, please review the recommendations in our support section. --- ## 4. Steps to Take Before Requesting a Refund Before requesting a refund, please complete the following steps: - Read the extensive documentation included with the product. - If the problem persists, review and correct your server configuration. Following these steps resolves the majority of issues, which are typically related to configuration rather than to the product itself. --- ## 5. Disputes and Chargebacks Please note that opening a dispute or initiating a chargeback will not speed up your refund request. We reserve the right to refer such cases directly to the PayPal fraud department, where your account with that provider may end up limited or restricted. --- ## 6. Change of Mind and Voluntary License Cancellation Because our products are digital, once you download a product you have taken ownership of it, and we cannot offer a refund. If you have changed your mind, or found a different product you prefer after completing your purchase, we do not provide refunds to users who wish to voluntarily renounce their license. To avoid this situation, please read the product specifications carefully before purchasing. If you still have questions, contact our sales agents, who will be happy to assist you. --- ## 7. Duplicate Payments To request a refund for a duplicate payment, or because you never downloaded the product, please contact us at **info@doothemes.com**. We will verify the information and, where applicable, process the return of your funds within a period of no longer than 24 hours. --- ## 8. Contact Us If you have any questions about this Refund Policy, please contact us: - **Company:** EWS Networks - **Website:** doothemes.com - **Email:** info@doothemes.com # Terms of Service > These Terms of Service govern your access to and use of the Doothemes website, products, downloads, and services operated by EWS Networks. They explain your rights and responsibilities, the license granted for our WordPress products, and the disclaimers, limitations of liability, and indemnities that apply, including your sole responsibility for any use you make of our products. Source: https://doothemes.com/p/terms-of-service --- ## 1. Acceptance of These Terms These Terms of Service ("Terms") form a binding agreement between you ("you", "your", or "User") and **EWS Networks** ("EWS Networks", "Doothemes", "we", "us", or "our") regarding your access to and use of the website at **doothemes.com**, its subdomains, and all related products, digital downloads, updates, support, forums, and services (collectively, the "Services"). By accessing, browsing, registering for, purchasing, downloading, or otherwise using the Services, you confirm that you have read, understood, and agree to be bound by these Terms, together with our [Privacy Policy](https://doothemes.com/privacy-policy/) and [Refund Policy](https://doothemes.com/refund-policy/), which are incorporated by reference. If you do not agree with any part of these Terms, you must not use the Services. --- ## 2. Definitions For the purposes of these Terms: - **Products** means the WordPress themes, plugins, child themes, frameworks, software, code, and other digital goods made available through the Services. - **Account** means the registered account you create to access and purchase the Services. - **License** means the right to use a Product as described in Section 6. - **User Content** means any content you submit, post, or publish through the Services, including forum posts, comments, and support messages. - **Your Sites** means any websites, applications, or projects that you build, operate, or distribute using our Products. --- ## 3. Eligibility You must be at least 18 years old, or the age of majority in your jurisdiction, and have the legal capacity to enter into a binding contract in order to use the Services. By using the Services, you represent and warrant that you meet these requirements and that all information you provide is accurate, current, and complete. --- ## 4. Accounts and Registration To purchase or download certain Products, you must create an Account. You agree to provide accurate and complete information and to keep it up to date. You are solely responsible for maintaining the confidentiality of your Account credentials and for all activity that occurs under your Account. You must notify us immediately of any unauthorized use of your Account or any other breach of security. We are not liable for any loss or damage arising from your failure to safeguard your credentials. --- ## 5. Our Products and Digital Delivery Our Products are digital goods delivered electronically through download. No physical goods are shipped. You are responsible for ensuring that your hosting environment, server, and WordPress installation meet the requirements stated for each Product. Some Products, or components within them, may be subject to separate open-source licenses (such as the GNU General Public License applicable to certain WordPress code). Where such licenses apply, they govern those specific components; these Terms govern your relationship with us and your use of the Services as a whole. --- ## 6. License Grant Subject to your full compliance with these Terms and payment of all applicable fees, we grant you a limited, non-exclusive, non-transferable, non-sublicensable, and revocable License to install and use the relevant Product in accordance with the scope of the license tier you purchased (for example, the permitted number of websites or installations). All rights not expressly granted to you are reserved by us and our licensors. This License does not transfer any ownership of the Products to you. --- ## 7. License Restrictions and Prohibited Uses Except as expressly permitted by these Terms or by applicable mandatory law, you must not: - Resell, redistribute, sublicense, rent, lease, lend, or otherwise make a Product available to any third party as a standalone item. - Remove, alter, or obscure any copyright, trademark, license key, or other proprietary notices contained in a Product. - Claim authorship of a Product or represent it as your own original work. - Use the Services or Products for any unlawful, fraudulent, infringing, or harmful purpose. - Use a Product to create, host, or distribute content that infringes the intellectual property, privacy, or other rights of any third party, or that violates any applicable law. - Attempt to gain unauthorized access to, interfere with, or disrupt the Services, our servers, or our security measures. - Use automated means to scrape, harvest, or overload the Services. We reserve the right to investigate and take appropriate action against any violation of this Section, including suspension or termination of your Account and License. --- ## 8. Your Responsibility for Use and Content You acknowledge and agree that you are solely and exclusively responsible for how you use our Products, for **Your Sites**, and for all content you create, publish, store, or distribute through them. This includes obtaining all rights, licenses, consents, and permissions required for any content you make available, and complying with all laws and regulations applicable to your activities, including those relating to intellectual property, copyright, data protection, consumer protection, and content. We do not monitor, control, endorse, or assume any responsibility for **Your Sites**, your User Content, or the manner in which you or any third party uses our Products. Any use of our Products that is inappropriate, unintended, unauthorized, or unlawful is your sole responsibility, and you assume all associated risks and liabilities. We provide the Products as tools only and are not a party to, and bear no responsibility for, anything you build or distribute with them. --- ## 9. Intellectual Property The Products, the Services, and all related materials, including the "Doothemes" and "EWS Networks" names, logos, designs, text, graphics, and code, are owned by or licensed to us and are protected by intellectual property laws. Except for the limited License granted in Section 6, nothing in these Terms transfers any intellectual property rights to you. If you choose to provide us with suggestions, ideas, or feedback, you grant us a perpetual, irrevocable, worldwide, royalty-free license to use that feedback for any purpose without obligation to you. --- ## 10. Orders, Pricing, and Payment Prices for Products are displayed on the Services and may change at any time. You are responsible for any applicable taxes, duties, or charges. Payments are processed by third-party payment providers, and by completing a purchase you authorize the applicable charge. We reserve the right to refuse or cancel any order, and to correct any pricing errors, even after an order has been submitted. We may also modify, suspend, or discontinue any Product at any time. --- ## 11. Refunds All purchases are subject to our [Refund Policy](https://doothemes.com/p/refund-policy). As a general rule, our Products are digital and downloadable, and we do not offer refunds except in the limited circumstances described in that policy. By purchasing, you agree to its terms. --- ## 12. Updates, Maintenance, and Support We may, at our discretion, provide updates, improvements, or fixes for our Products, but we are under no obligation to do so. Support may be offered to verified customers through our [support forum](https://doothemes.com/forums/) and other channels, subject to availability and any applicable support terms. We do not warrant that the Services will be available without interruption, error-free, or compatible with every hosting environment, server configuration, plugin, or third-party service. We may modify, suspend, or discontinue all or part of the Services at any time. --- ## 13. Third-Party Services and Links The Services and Products may interact with, link to, or rely on third-party websites, plugins, services, or content that we do not own or control. We are not responsible for the availability, accuracy, security, or practices of any third party, and your use of any third-party service is at your own risk and subject to that third party's terms. --- ## 14. User Content and Community You retain ownership of your User Content. By submitting User Content to our forums or other community areas, you grant us a non-exclusive, worldwide, royalty-free license to host, display, and use that content for the purpose of operating and improving the Services. You are responsible for your User Content and agree not to post anything unlawful, infringing, abusive, or otherwise objectionable. We may, but are not obligated to, review, moderate, or remove User Content, and we may restrict or terminate access for violations of these Terms. --- ## 15. Disclaimer of Warranties To the maximum extent permitted by applicable law, the Services and Products are provided on an **"AS IS"** and **"AS AVAILABLE"** basis, without warranties of any kind, whether express, implied, or statutory. We expressly disclaim all warranties, including any implied warranties of merchantability, fitness for a particular purpose, title, and non-infringement. We do not warrant that the Products will meet your requirements, operate without interruption or error, be free of vulnerabilities, or function in every environment or server configuration. Any material you download or use is obtained at your own discretion and risk. --- ## 16. Limitation of Liability To the maximum extent permitted by applicable law, in no event shall EWS Networks, Doothemes, or our owners, affiliates, employees, agents, or licensors be liable for any indirect, incidental, special, consequential, exemplary, or punitive damages, or for any loss of profits, revenue, data, goodwill, or business opportunities, arising out of or in connection with your access to or use of (or inability to use) the Services or Products, regardless of the legal theory and even if we have been advised of the possibility of such damages. Without limiting the foregoing, we shall not be liable for any damages, losses, or claims arising from or related to: (a) your use, misuse, inappropriate use, or unlawful use of any Product; (b) **Your Sites** or your User Content; (c) any content created, hosted, or distributed by you or by third parties using our Products; (d) third-party services, plugins, or websites; or (e) your server, hosting, or configuration. To the maximum extent permitted by applicable law, our total aggregate liability for all claims relating to the Services or a Product shall not exceed the amount you actually paid to us for that Product during the twelve (12) months preceding the event giving rise to the claim. Some jurisdictions do not allow certain limitations or exclusions of liability, so some of the above may not apply to you. In such cases, our liability is limited to the smallest extent permitted by law. --- ## 17. Indemnification You agree to indemnify, defend, and hold harmless EWS Networks, Doothemes, and our owners, affiliates, employees, agents, and licensors from and against any and all claims, demands, damages, losses, liabilities, costs, and expenses (including reasonable legal fees) arising out of or related to: (a) your use or misuse of the Services or Products; (b) **Your Sites** or your User Content; (c) your violation of these Terms or any applicable law or regulation; or (d) your infringement or violation of the rights of any third party. We reserve the right, at our own expense, to assume the exclusive defense and control of any matter otherwise subject to indemnification by you, in which case you agree to cooperate with us. --- ## 18. Compliance with Laws You are responsible for ensuring that your use of the Services and Products, and the operation of **Your Sites**, complies with all applicable laws, regulations, and third-party rights at all times. You must not use our Products in any way that would cause us to violate any law or that exposes us to liability. --- ## 19. Termination We may suspend or terminate your access to the Services, your Account, or your License at any time, with or without notice, if you violate these Terms or if we reasonably believe your conduct may harm us, other users, or third parties. Upon termination, your right to use the affected Products and Services ceases immediately. Sections that by their nature should survive termination, including those relating to intellectual property, disclaimers, limitation of liability, indemnification, and governing law, will continue to apply. --- ## 20. Modifications to the Services and Terms We may modify the Services and these Terms at any time. When we make material changes, we will update the "Last Updated" date above and, where appropriate, provide additional notice. Your continued use of the Services after changes take effect constitutes your acceptance of the revised Terms. If you do not agree to the changes, you must stop using the Services. --- ## 21. Governing Law and Dispute Resolution These Terms are governed by and construed in accordance with the laws of Peru, without regard to its conflict-of-law principles. You agree that any dispute arising out of or relating to these Terms or the Services shall be subject to the exclusive jurisdiction of the competent courts of [your city / jurisdiction], unless otherwise required by applicable mandatory law. --- ## 22. General Provisions - **Severability** — If any provision of these Terms is found to be invalid or unenforceable, the remaining provisions will remain in full force and effect. - **Waiver** — Our failure to enforce any right or provision will not constitute a waiver of that right or provision. - **Assignment** — You may not assign or transfer these Terms without our prior written consent. We may assign them freely in connection with a merger, acquisition, or sale of assets. - **Force Majeure** — We are not liable for any failure or delay caused by events beyond our reasonable control. - **Entire Agreement** — These Terms, together with the Privacy Policy and Refund Policy, constitute the entire agreement between you and us regarding the Services and supersede any prior agreements. --- ## 23. Contact Us If you have any questions about these Terms of Service, please contact us: - **Company:** EWS Networks - **Website:** doothemes.com - **Email:** info@doothemes.com