# 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 > Dbmovies turns WordPress into a complete movie and TV website. This page explains what it does, how its pieces fit together and how this documentation is organized. Source: https://doothemes.com/docs/dbmovies --- ## Welcome Thank you for choosing Dbmovies. This documentation covers everything you need to run a movie and TV website with it, from installing the plugin and activating your license to importing your catalog, managing links and charging for memberships. It is written for site owners, content managers and the developers who build on top of Dbmovies. ## What is Dbmovies? Dbmovies is a premium WordPress plugin that turns your site into a complete movie and TV website. It imports the information of each title from The Movie Database (TMDb) and IMDb (synopsis, posters, backdrops, genres, cast and crew, trailers and ratings) and creates pages that are ready to publish in seconds. Instead of creating every movie, TV show and episode by hand, Dbmovies handles the whole workflow. It registers the content structure, imports the data, creates the episodes of each TV show in the background and keeps everything up to date. On top of that, it gives you the tools to manage video links, user accounts, memberships and ads from the WordPress admin. Dbmovies manages the content, and your theme shows it to your visitors. The [Wovie](https://doothemes.com/items/wovie) theme is built for Dbmovies and uses all its features. > **Note:** Dbmovies does not include, host or stream any video. You add your own video sources, and you are responsible for having the rights to publish them. ![Search TMDb for movies and TV shows by title, or discover them by year, page, sort order and genre, and browse the results as a poster grid where imported titles are marked. Import a title in one click, or several at once with bulk import, and the process](https://cdn.wupdater.com/dbmovies/screenshot/ee63809c60032675.webp) ## How it works 1. **Install and activate.** Install the plugin, activate your license in **Dbmovies › Updates** and add your free TMDb API key. See [Installation](https://doothemes.com/docs/dbmovies/installation) and [License activation](https://doothemes.com/docs/dbmovies/license-activation). 2. **Import your catalog.** Search TMDb by title, or discover titles by year, genre and popularity. Import them one by one or a whole page of results at a time, or paste a TMDb or IMDb link with Quick import. 3. **Let the episodes arrive.** With Automatic episodes turned on, every TV show you import queues its aired episodes, which are created in the background, one season at a time. 4. **Add the video links.** Add links by hand, import thousands from an Excel or CSV file, or generate them for every title from your provider's URL pattern with Auto-Embed. 5. **Open your site to your audience.** Visitors create accounts, save titles to My List, rate them, request new ones and subscribe to premium memberships. 6. **Keep it fresh.** The Meta Updater refreshes ratings, cast and metadata on a schedule, and the link health checks tell you which links stopped working. ## Key features ### Content engine - Content types for movies, TV shows, episodes and collections, with genres, release years, countries and persons (cast and crew). - One-click [importers](https://doothemes.com/docs/dbmovies/modules/importers) for movies and TV shows from TMDb, with IMDb ratings. - Bulk import of a whole page of results, Quick import with a TMDb or IMDb link or ID, and [title requests](https://doothemes.com/docs/dbmovies/modules/user-requests) from your users. - Automatic episodes: the episodes of each TV show are created in the background, season by season, with limits you control. - The [Meta Updater](https://doothemes.com/docs/dbmovies/tools/metaupdater) keeps ratings, cast and metadata up to date on its own. ### Links - One screen to manage every streaming and download [link](https://doothemes.com/docs/dbmovies/modules/link-sources), with its language, quality, status, premium access and play count. - Import links from Excel or CSV files, up to 5,000 rows per file, with a full preview before anything is saved. - [Auto-Embed](https://doothemes.com/docs/dbmovies/settings/auto-embed-support): embed links for every movie and episode, built from each title's IDs. - [Link health checks](https://doothemes.com/docs/dbmovies/tools/analyze-link-health) for MEGA, 1fichier, MediaFire, MegaUp and YouTube links. ### Audience - User accounts with sign-up, Google sign-in, email verification and active session management. - My List, [user ratings](https://doothemes.com/docs/dbmovies/modules/user-ratings), comments with custom emojis, and title requests. - A [view counter](https://doothemes.com/docs/dbmovies/modules/view-counter) and [featured content](https://doothemes.com/docs/dbmovies/modules/featured-content) to highlight what matters. ### Monetization - Premium [memberships](https://doothemes.com/docs/dbmovies/modules/subscriptions) with plans, taxes and automatic recurring billing through PayPal, plus manual activation for other payment methods. - A [Payments](https://doothemes.com/docs/dbmovies/modules/payments) screen with every charge, refund and renewal. - Premium-only links for members. - An [Ad Manager](https://doothemes.com/docs/dbmovies/modules/ad-manager) for your own ad slots and campaigns. ### Administration and security - A license hub that manages the licenses and [updates](https://doothemes.com/docs/dbmovies/modules/updates) of Dbmovies and your Doothemes themes. - A [firewall](https://doothemes.com/docs/dbmovies/settings/firewall) with an IP blacklist and email checks that reject disposable addresses. - Maintenance tools: [Sources domain exchanger](https://doothemes.com/docs/dbmovies/tools/sources-domain-exchanger), [Cleanup orphaned persons](https://doothemes.com/docs/dbmovies/tools/cleanup-orphaned-persons), [Cron Jobs](https://doothemes.com/docs/dbmovies/tools/cron-jobs) and the [Restorer](https://doothemes.com/docs/dbmovies/tools/restorer). - Background tasks with time limits, WordPress Site Health checks, and a REST API for integrations. ## Content structure Dbmovies registers its own content types and taxonomies, so your catalog stays separate from your regular posts and pages. | Content | Type | What it holds | |---|---|---| | [Movies](https://doothemes.com/docs/dbmovies/post-types/movies) | Post type | Each movie, with its metadata, images and links | | [TV Shows](https://doothemes.com/docs/dbmovies/post-types/tvshows) | Post type | Each TV show, with its seasons and metadata | | [Episodes](https://doothemes.com/docs/dbmovies/post-types/episodes) | Post type | Each episode, linked to its TV show, with its links | | [Collections](https://doothemes.com/docs/dbmovies/post-types/collections) | Post type | Curated groups of titles | | [Genres](https://doothemes.com/docs/dbmovies/taxonomies/genres) | Taxonomy | Genres from TMDb | | [Releases](https://doothemes.com/docs/dbmovies/taxonomies/releases) | Taxonomy | Release years | | [Countries](https://doothemes.com/docs/dbmovies/taxonomies/countries) | Taxonomy | Production countries | | [Persons](https://doothemes.com/docs/dbmovies/taxonomies/persons) | Taxonomy | Cast and crew | | [Tags](https://doothemes.com/docs/dbmovies/taxonomies/tags) | Taxonomy | WordPress tags, on movies and TV shows | ## What you need - WordPress 7.0 or higher and PHP 8.1 or higher. - A free TMDb API key. - An active Dbmovies license, for importing, background tasks and updates. - Recommended: the Wovie theme, a server cron job that runs every minute, and an object cache such as Redis on large sites. See [Requirements](https://doothemes.com/docs/dbmovies/requirements) for the full list. ## Who is Dbmovies for? - **Site owners** who want to launch a movie and TV website quickly, without writing code. - **Content managers** who need to import, update and organize thousands of titles and links. - **Developers** who build themes or add-ons on top of the Dbmovies content types, hooks and REST API. ## How this documentation is organized - **Getting started:** [Requirements](https://doothemes.com/docs/dbmovies/requirements), [Installation](https://doothemes.com/docs/dbmovies/installation), [License activation](https://doothemes.com/docs/dbmovies/license-activation) and [Initial settings](https://doothemes.com/docs/dbmovies/initial-settings). - **Post types and taxonomies:** what each content type stores and how it is used. - **Modules:** the importers, link sources, payments, subscriptions, ads, user requests and ratings, the view counter, featured content and updates. - **Tools:** the Meta Updater, link health checks and the maintenance tools. - **Settings:** every section of the Dbmovies settings, from required pages to Auto-Embed and the firewall. - **Guides:** step-by-step guides such as Redis cache and deploying a CDN server. - **Releases:** what changed in each version. ## Getting help - **Support tickets:** customers with an active license can [open a ticket](https://doothemes.com/account/tickets/new) from their account. - **Telegram group:** join the [Doothemes community on Telegram](https://doothemes.com/g/8cc0ab548d090f9e). # Ad Manager > The Ad Manager serves your own ads in the positions your theme offers: banners, ad network code and native sponsor ads. This page explains slots, ad types, statuses and rotation, targeting by device and dates, stats, and how to charge advertisers. Source: https://doothemes.com/docs/dbmovies/modules/ad-manager --- ## Overview The Ad Manager serves your ads in the positions of your site: your own banners, the code of an ad network such as AdSense, or native sponsor ads. It counts impressions and clicks, rotates several ads in the same position, and lets you charge advertisers for their campaigns. You find it in **Dbmovies › Ads**. ## Slots A slot is a fixed position on your pages where an ad can appear, for example next to the comments. **Your theme declares its slots**, so the list only offers positions that your theme really shows. [Wovie](https://doothemes.com/items/wovie) offers four slots: | Slot | Where it appears | |---|---| | **Comments — Sidebar aside top** | Next to the comments, at the top (300×250) | | **Comments — Sidebar aside bottom** | Next to the comments, at the bottom (300×250) | | **Drift pop — bottom right** | A small box that appears at the bottom right of the screen | | **Search — Native pair under title** | Two native ads under the title of the search page | If your theme declares no slots, the **Add ad** button stays disabled: there would be nowhere to show the ad. ## Ad types The type defines how the ad looks and what you fill in: - **Image + link**: a banner image that opens a link. You add the image URL, the target URL and an alt text. Impressions and clicks are counted. - **HTML / JS snippet**: the code of an ad network, such as AdSense or Ezoic, or an affiliate script. Only impressions are counted here: the network counts the clicks. Only administrators can edit this code. - **Native (icon + desc)**: a small sponsor ad with a square icon, a short description (60 to 130 characters work best) and the sponsor name. Impressions and clicks are counted. - **Video (pre/mid-roll)**: a video played by the theme player, which can be skipped after some seconds. The theme player has to support it; Wovie does not yet. Your theme can hide the types it cannot show, so you may see fewer options. ## Creating an ad 1. Click **Add ad**. 2. Give it a **Title**, for your own reference. 3. Choose the **Slots** where it can appear, and its **Type**. 4. Fill in the content of the type. The **Preview** shows how it will look. 5. Choose the **Status**, and optionally the targeting. 6. Click **Create ad**. ![The new ad panel, with an Image + link ad, its slots, the preview and the status](https://cdn.wupdater.com/dbmovies/docs/f9ce549fddfd0da3.webp) ## Statuses - **Draft**: work in progress. Never shown. - **Active**: live, and part of the rotation of its slots. - **Paused**: stopped, but ready to resume. - **Archived**: a finished campaign kept for its history. Never shown. **Restore** brings it back as **Paused**, so you can review it before turning it on again. To end a campaign, archive it instead of deleting it: you keep its impressions and clicks. ## Rotation When several ads are active in the same slot, each visit shows one of them, chosen by its **Rotation weight** (1 to 10). An ad with weight 5 is about five times more likely to appear than one with weight 1. Set it with the slider of the ad, marked **Low** (1), **Normal** (3), **High** (5) and **Boost** (10). You can also change the weight from the list, without opening the ad. ## Targeting - **Show on (device)**: **Desktop**, **Mobile** and **Tablet** (tablets count as mobile). Leave all unchecked to show the ad on every device. - **Start at** and **End at**: optional dates. Outside them, the ad is not shown, even if it is active. Useful for campaigns with a set period. ## Stats - **Impressions**: counted only when the ad is at least halfway on the screen, so preloading and bots do not inflate them. The same visitor counts once per ad per hour. - **Clicks**: counted when a visitor follows an image, native or video ad. Clicks on HTML/JS ads are counted by their network. - **CTR**: clicks divided by impressions. The top of the screen shows a chart of daily impressions for the last 90 days, the totals of the period and the number of active ads. The list shows the impressions, clicks and CTR of each ad. Totals refresh in the background every 10 minutes. To update them right away, for example after a test, click **Refresh totals**. ![Dbmovies › Ads, with the impressions chart, the filters and the list of ads with their impressions, clicks, CTR and rotation weight](https://cdn.wupdater.com/dbmovies/docs/9a4bf9c124e5bf9a.webp) ## Advertisers and payments If you sell an ad to an advertiser, assign them in the **Advertiser** field of the ad. That turns on: - **Contract**: the agreed price and notes, used as defaults when you register its payments. - **Campaign progress**: the day of the campaign it is on, from its start and end dates. - **Accounting**: gross and net income from its payments. - **Payments history**: its payments, with **Add payment** to register a new one. Leave **Advertiser** empty for your own ads. Payments for ads also appear in **Dbmovies › Payments**. See [Payments](https://doothemes.com/docs/dbmovies/modules/payments). An ad with payments cannot be deleted: delete its payments first. Deleting an ad keeps its stats. ![The edit panel of an ad with an advertiser, showing Contract, Campaign progress and the payments history](https://cdn.wupdater.com/dbmovies/docs/e6765caa91817f32.webp) ## Ad blockers If your browser has an ad blocker, the Ads screen warns you: it can hide the previews and the native ads of the admin. Turn it off on your site to work with the Ad Manager. ## Filters and search Search by title or hash, and filter by status, type and slot. # Analyze link health > Analyze link health checks every link of your site with its host and gives it a health score, so you can find and fix broken links. This page explains which hosts are checked, what the scores mean and how to run the analysis. Source: https://doothemes.com/docs/dbmovies/tools/analyze-link-health --- ## Overview Hosts delete files and videos all the time, and a broken link frustrates your visitors. **Analyze link health** checks every link of your site directly with its host and gives it a **health score** from 0 to 100. Then you can find the broken ones in **Dbmovies › Links** and replace or remove them. You find it in **Dbmovies › Tools**, or in the **Tools** menu of **Dbmovies › Links**. ## Supported hosts Each host is checked with the most reliable method it offers: | Host | How it is checked | |---|---| | **MEGA** | Its own API | | **YouTube** | Its official embed information (oEmbed) | | **1fichier**, **MediaFire** and **MegaUp** | The page of the file | The HTTP status is not enough, because many hosts answer "OK" even when the file was deleted. That is why Dbmovies looks at the content of the answer. Links from other hosts are not checked and stay at 0 (**Not checked**). ## Health scores | Result | Score | Shown as | |---|---|---| | The file is available | 100 | **Healthy** (80–100) | | Unclear: the host blocked the check, did not answer in time, or answered something ambiguous | 50 | **Degraded** (50–79) | | The file was deleted or the link is not valid | 1 | **Broken** (1–49) | | The host is not supported, or the link was never checked | 0 | **Not checked** (0) | A **Degraded** link is not necessarily broken: check it again later, or open it to see. ## Running the analysis 1. Go to **Dbmovies › Tools › Analyze link health**. The panel shows how many links will be checked. 2. Click **Start** and confirm. 3. Follow the progress: how many links are healthy and how many are broken, and the time left. - **Pause, Resume, Stop.** You can pause and resume at any time, or stop. If you close the browser, your progress is kept for 24 hours, and the panel offers to **Resume** it or **Discard** it when you come back. - **Time.** Each link is checked with a live request to its host, which can take up to 20 seconds when a host is slow. On a large catalog the analysis takes a while, so run it at quiet hours. - **Scores are replaced.** The analysis checks all your links and replaces their previous scores. ![The Analyze link health panel during an analysis, with the progress bar, the healthy and broken counters and the Pause and Stop buttons](https://cdn.wupdater.com/dbmovies/docs/aff23912a5d14308.webp) ## Fixing broken links 1. Go to **Dbmovies › Links**. 2. Filter by **Health › Broken**. 3. For each link, replace its URL in the edit panel, or delete it. Broken links are deleted without asking for confirmation, so you can clean them up quickly. To stop showing a link without deleting it, set its status to **Revoked**. See [Link sources](https://doothemes.com/docs/dbmovies/modules/link-sources#deleting-links). ## Other ways the score is updated You do not need to run the full analysis for every change: - **When you add or edit a link**, Dbmovies checks it on save. For downloads, it also reads the file size from the host when it can, and fills in the field if you left it empty. - **After importing links from a spreadsheet**, the last step offers **Analyze health**, which checks only the links you just imported. See [Link sources](https://doothemes.com/docs/dbmovies/modules/link-sources#4-check-their-health). # Auto-Embed support > Auto-Embed adds embed links to every movie and episode of your site from your provider's URL pattern, using the IMDb and TMDb IDs of each title. This page explains how to set up the sources, which markers you can use, and how to leave titles out. Source: https://doothemes.com/docs/dbmovies/settings/auto-embed-support --- ## Overview Many video providers use the same address pattern for every title, built from its IMDb or TMDb ID, such as `https://player.example.com/movie/{tmdb_id}`. With **Auto-Embed**, you set that pattern once and every movie and episode of your site gets its embed link. Auto-Embed links are **virtual**: they are not saved as links. Dbmovies builds them from each title's IDs every time the list of links is requested. That means: - they take no space in your database, even with tens of thousands of episodes; - a change in the settings applies to every title at once; - turning Auto-Embed off removes them from every title. They are shown after the title's own links, with the name you give them. :::note Use providers you trust and are allowed to use. Auto-Embed only builds the address: the video, its ads and its availability depend on the provider. ::: ## Setting up the sources Go to **Dbmovies › Settings › Links › Auto-Embed** and turn on **Enable resources**. Then add your sources in two lists: - **Movie Sources**: added to every movie. - **Episode Sources**: added to every episode of your TV shows. Click **Add source** for each provider. Each source has: | Field | What it does | |---|---| | **Source name** | The server name shown in the list of links. If you leave it empty, the domain of the URL is used | | **Source URL** | The address pattern of the provider, with markers. It must start with `http://` or `https://` | | **Language** | The language of the audio, shown with the link | | **Quality** | The quality shown with the link | | **Premium** | Only members with an active subscription can play it | The order of the list is the order in which the sources appear. [SCREENSHOT_HERE: Dbmovies › Settings › Links › Auto-Embed, with Enable resources on and a source in Movie Sources] ## Markers The markers of the URL are replaced with the data of each title. | Marker | Movie Sources | Episode Sources | |---|---|---| | `{imdb_id}` | IMDb ID of the movie | IMDb ID of the TV show | | `{tmdb_id}` | TMDb ID of the movie | TMDb ID of the TV show | | `{season_number}` | | Season number of the episode | | `{episode_number}` | | Episode number | For example: ```text https://player.example.com/movie/{tmdb_id} https://player.example.com/tv/{tmdb_id}/{season_number}/{episode_number} ``` - **A title without a value gets no link from that source.** If a source uses `{imdb_id}` and a movie has no IMDb ID, that movie does not get it. The other sources still apply. - **Season and episode are optional.** An episode source without them opens the same page for every episode of the TV show, which helps with providers that only have a page per TV show. [SCREENSHOT_HERE: The list of links of an episode on the site, with an Auto-Embed source after the episode's own links] ## Leaving titles out To leave a movie or a TV show out of Auto-Embed, turn on the **Auto-Embed** switch in the **Advanced** box of its editor. Episodes have no switch of their own: they follow the switch of their TV show. See [Movies](https://doothemes.com/docs/dbmovies/post-types/movies#advanced) and [TV Shows](https://doothemes.com/docs/dbmovies/post-types/tvshows). ## How they differ from your links Auto-Embed links work like embed links for your visitors, but they are not regular links: - they are not listed in the **Links** box of the editor or in **Dbmovies › Links**; - they have no health score and are not checked by [Analyze link health](https://doothemes.com/docs/dbmovies/tools/analyze-link-health); - they are not counted in the **Sources** column of the lists. To change one, edit its source in the settings: the change reaches every title. To add a link for a single title, add it as a regular link. See [Link sources](https://doothemes.com/docs/dbmovies/modules/link-sources). # Automatic episodes > Automatic episodes imports the episodes of your TV shows in the background: every TV show you import joins a queue, and its aired episodes are created one season at a time. This page explains how the queue works, each setting, how to follow it and what to do when something goes wrong. Source: https://doothemes.com/docs/dbmovies/guides/automatic-episodes --- ## Overview A TV show can have hundreds of episodes. Importing them by hand, season by season, takes time. With **Automatic episodes**, you import the TV show and its episodes arrive on their own: the TV show joins a queue, and a task that runs in the background creates its aired episodes, one season at a time. You turn it on and adjust it in **Dbmovies › Settings › Data Importer › Automatic episodes**, and you follow the queue from the importer. ## How it works 1. **You import a TV show** from the importer, with Quick import, from the editor or from a user request. It joins the queue. 2. **Every minute, a run starts** and works for the time you set: 40 seconds by default. 3. **The run takes the first TV show in the queue** and imports it **one season at a time**, with one request to TMDb per season. 4. **For each season, it creates the episodes that are missing** on your site. If the run runs out of time, the TV show waits half done and the next run goes on from the same season. 5. **When every season is done,** the TV show is **Finished** and the queue moves to the next one. The queue only **creates** episodes. Some episodes are never created: - **Episodes you already have** are skipped and not changed. That includes episodes in the trash: if you deleted one, it does not come back. - **Episodes that have not aired:** with no date, or with a date in the future. - **Specials** (season 0). Each episode is created the same way as when you import it by hand: - its title, address and content come from your templates in [Titles and content](https://doothemes.com/docs/dbmovies/settings/titles-and-content); - its status is the one in **Importers Post Status** of [Data importer](https://doothemes.com/docs/dbmovies/settings/data-importer#status-of-imported-titles); - its author is the author of the TV show. ## Turn it on 1. Go to **Dbmovies › Settings › Data Importer › Automatic episodes**. 2. Turn on **Enable automatic episodes**. 3. Review the settings below and click **Save**. From then on, every TV show you import joins the queue. To add the TV shows you already have, see [Add the TV shows you already have](#add-the-tv-shows-you-already-have). ![Dbmovies › Settings › Data Importer › Automatic episodes, with all its settings](https://cdn.wupdater.com/dbmovies/docs/d74c5dde7a779f74.webp) ## Settings | Setting | What it does | Default | |---|---|---| | **Season order** | **First to last**, or **Last to first**. In long TV shows, starting with the latest season brings first the episodes most visitors look for | First to last | | **Seasons per TV show** | Only the most recent seasons. 0 imports every season | 0 | | **Episodes per TV show** | A limit of episodes for each TV show. It counts the episodes of the seasons the queue would import. 0 means no limit | 0 | | **Over the limit** | What happens with a TV show over the limit. **Skip the TV show**: it is imported without episodes. **Latest episodes only**: the queue imports only the most recent ones, up to the limit | Skip the TV show | | **Episode images** | **As in Import Images**, or **Never** | As in Import Images | | **Time per run** | How long each run works: 20, 40 or 55 seconds | 40 seconds | ### Limits, with an example Take a TV show with 10 seasons of 24 episodes, 240 in total: - **Seasons per TV show: 2** imports seasons 9 and 10, 48 episodes. - **Episodes per TV show: 100**, with **Skip the TV show**: the TV show has 240, so the queue skips it. You can still import its episodes by hand with its **Seasons** button. - **Episodes per TV show: 100**, with **Latest episodes only**: the queue goes back from the last season until it reaches 100. That is seasons 7 to 10, and from season 6 only its last 4 episodes. - **Both together:** **Seasons per TV show** is applied first, then the limit of episodes. With 2 seasons (48 episodes) and a limit of 100, nothing is cut. **Latest episodes only** always takes the most recent episodes, whatever the **Season order**. The order only decides which season goes first. ### Episode images **Episode images** only appears if **Import Images** uploads the image of each episode to your server (see [Import images](https://doothemes.com/docs/dbmovies/settings/import-images)). With **As in Import Images**, each episode the queue creates downloads its image from TMDb. The image is saved with two smaller copies, and it adds one post and three metadata rows to your database. Each run also creates fewer episodes. Across thousands of episodes, that adds up to several gigabytes. With **Never**, episodes still show their image, loaded from your CDN server or straight from TMDb, and nothing is saved on your server. On modest hosting, we recommend it. See [Deploy CDN Server](https://doothemes.com/docs/dbmovies/guides/deploy-cdn-server) for a comparison. ### Time per run - **20 seconds** on shared hosting with strict limits. - **40 seconds**, the default, for most sites. - **55 seconds** if you set up a server cron job. A run never goes over 60% of the PHP time limit of your server, whatever you choose. ## Follow the queue Open the importer (the **Dbmovies** menu), open the menu next to **Meta updater** and choose **Automatic episodes**. A panel opens on the side. ![The Automatic episodes panel in the importer, with the counters, the TV show in progress and the list of the queue](https://cdn.wupdater.com/dbmovies/docs/998f50af8ae24da7.webp) At the top, the panel shows how many TV shows are in each state: | Counter | Meaning | |---|---| | **Queued** | Waiting for their turn | | **In progress** | Half done: the next run goes on with it | | **Finished** | All its seasons were imported | | **Failed** | It had errors three times. The panel lists it with the last error | | **Skipped** | More episodes than your limit, with **Skip the TV show**. The panel lists it with its number of episodes | | **Episodes created** | Episodes the queue created, in total | Below the counters: - **The TV show in progress,** with its season and its place in the list, such as *Now: The Office · season 3 (3 of 9)*. - **The list of the queue,** in the order the TV shows will be imported, with up to 50 TV shows. Each one shows how many episodes it has so far and its state: - **Season 3 · 3 of 9**: in progress. - **Waiting**: it has not started. - **Retrying**: it had an error and goes again. - **Retry at 14:30**: it had an error and waits until that time. While the queue is working, the panel refreshes on its own every 15 seconds. ### The buttons | Button | What it does | |---|---| | **Queue TV shows with missing episodes** | Adds to the queue the TV shows of your site that are missing episodes. See below | | **Run now** | Runs the queue for up to 20 seconds right away, without waiting for the next minute | | **Retry failed** | Puts the failed TV shows back in the queue, from the start | | **Clear finished** | Removes the finished TV shows from the list. Their episodes stay | ### In the list of TV shows In **TV Shows › All TV Shows**, the **Seasons** column also shows the state of each TV show in the queue, below its button: - **Episodes queued**: waiting for its turn. - **Importing episodes · S2**: in progress, on season 2. - **Episodes failed**: hover over it to see the error. - **Skipped · 240 episodes**: over your limit. When the queue finishes a TV show, the line disappears. ## Add the TV shows you already have The queue receives the TV shows you import from the moment you turn it on. For the ones you already had, click **Queue TV shows with missing episodes** in the panel. It looks at every TV show of your site. A TV show joins the queue if one of the seasons the queue would import has fewer episodes on your site than on TMDb. TV shows over your limit, with **Skip the TV show**, are marked as skipped instead. TMDb also counts episodes that are announced but have not aired. So a TV show on the air can join the queue even if it only misses those. The queue then checks its seasons, one request each, and finishes without creating anything. ## New episodes of a TV show on the air The queue does not watch your TV shows after it finishes them. When a new episode airs, bring it to your site in one of these ways: - **For a few TV shows:** open the seasons manager with the **Seasons** button and import the latest season. - **For your whole catalog:** 1. Update your TV shows with the [Meta Updater](https://doothemes.com/docs/dbmovies/tools/metaupdater), so your site knows about their new episodes. 2. Click **Queue TV shows with missing episodes**. ## When something goes wrong **If TMDb does not answer,** the whole queue pauses and resumes on its own. These pauses do not count as errors of the TV show: | What happened | Pause | The panel shows | |---|---|---| | TMDb is limiting requests | 2 minutes | *Paused: TMDb is limiting requests.* | | TMDb did not respond, or had an error | 5 minutes | *Paused: TMDb did not respond.* | | TMDb rejected your API key | 30 minutes | *Paused: TMDb rejected the API key. Check it in the settings.* | **Any other error counts as an attempt for that TV show.** It goes back to the queue from the start: after 5 minutes the first time, and after 30 minutes the second time. After the third attempt, it is **Failed**. Fix the cause, then click **Retry failed**. **If TMDb no longer has a season,** the queue skips that season, with no error. ## What it needs - **An active license.** Without it, the panel shows *The queue is waiting for an active license.* - **Your TMDb API key**, in [Data importer](https://doothemes.com/docs/dbmovies/settings/data-importer). If you use the TMDb proxy, each season uses one request of your daily limit. - **Scheduled tasks that run every minute.** WordPress runs them only when someone visits your site. If they have not run for more than 5 minutes, the panel warns you. We recommend a server cron job: see [Cron Jobs](https://doothemes.com/docs/dbmovies/tools/cron-jobs#setting-up-a-server-cron-job). ## Changing the settings while it runs - **TV shows that have not started** use the new settings. That includes the limit of episodes: a TV show over the new limit is skipped when its turn comes. - **A TV show in progress** goes on. If its list of seasons changed, it starts again from its first season. The episodes it already created are skipped, so nothing is repeated. - **Turning it off** stops the queue. The TV shows stay in it, and the queue goes on when you turn it on again. If you delete a TV show permanently, it leaves the queue. If you move it to the trash, the queue removes it when its turn comes. ## Troubleshooting | Problem | What to do | |---|---| | The queue does not move | Look at the warnings of the panel. Check that Automatic episodes is on, that your license is active and that scheduled tasks run. If it says *Paused*, wait until the time it shows | | A TV show is **Failed** | Read the error in the panel, or hover over **Episodes failed** in the list of TV shows. Fix it, then click **Retry failed** | | Some episodes are missing | They may not have aired yet, they may be in the trash, or they may be specials (season 0). Also check **Seasons per TV show** and **Episodes per TV show** | | A TV show is **Skipped** | It has more episodes than your limit. Raise the limit, choose **Latest episodes only**, or import it by hand with its **Seasons** button | | It is slow | Set up a server cron job and choose 55 seconds in **Time per run**. If episodes upload their image, choose **Never** in **Episode images** | # Cleanup orphaned persons > Cleanup orphan persons deletes the persons that no title uses anymore, left by older versions of Dbmovies or by deleted titles. This page explains what an orphan person is, what is kept, and how to run the cleanup safely. Source: https://doothemes.com/docs/dbmovies/tools/cleanup-orphaned-persons --- ![The Cleanup orphan persons panel in the importer, before starting, with its warnings](https://cdn.wupdater.com/dbmovies/docs/3503907073e8adab.webp) ## Overview A person is **orphaned** when no title uses them anymore: no movie or TV show lists them in its cast or crew. Orphan persons take up space in your database and can show up as empty person pages. Since Dbmovies 1.3.32, persons do not pile up anymore. When an update removes a person from a title and no other title uses them, Dbmovies deletes the person right away. This tool cleans up the orphans left by: - **older versions of Dbmovies**, which could leave persons behind when updating titles; - **titles you deleted permanently**, together with the persons only they used. You find it in the importer: open the arrow next to **Meta updater** and choose **Cleanup orphan persons**. You can also open it directly by adding `?tool=orphan-cleanup` to the address of the importer. ## What is deleted and what is kept - **Deleted:** persons that are not linked to any title, in any status. - **Kept:** persons linked to a title that is a draft, scheduled or in the trash, even though their page does not show that title yet. Only persons are cleaned. Genres, release years, countries and tags are not touched. ## Before you start - **Run the Meta Updater first.** An update links each title to its current cast and crew again, so some persons that look orphaned get a title back and are skipped by the cleanup. See [Metaupdater](https://doothemes.com/docs/dbmovies/tools/metaupdater). - **Keep a recent database backup.** The cleanup cannot be undone: deleted persons lose their profile, photo and biography. If a title needs them again, they are created again from TMDb on its next import or update. ## Running the cleanup 1. Open **Cleanup orphan persons** in the importer. 2. Click **Cleanup**. The panel counts the orphan persons it found and shows a preview of the first 50, with their name and TMDb ID. 3. Confirm. The persons are deleted in batches, and the panel shows how many were deleted, skipped and failed, and the time left. You can close the panel and keep using the importer: the cleanup goes on while the page stays open. If you leave the page or click **Stop**, run it again later: it simply continues with the persons that are still orphaned. ![The Cleanup orphan persons panel in the importer, with the number of orphan persons found and the deleted, skipped and errors counters](https://cdn.wupdater.com/dbmovies/docs/77fcfc5b4b8f40f6.webp) ## How often to run it You do not need to run it regularly. Run it once after updating from a version older than 1.3.32, and again after you delete many titles. # Cloudflare Turnstile > Cloudflare Turnstile protects the sign-in, sign-up, password recovery and contact forms from bots, with a security check that is usually invisible to your visitors. This page explains how to create your widget in Cloudflare, each setting, and how to test it. Source: https://doothemes.com/docs/dbmovies/integrations/cloudflare-turnstile --- ## Overview Bots try to create fake accounts, guess passwords and fill your contact form with spam. **Cloudflare Turnstile** stops them with a security check in your forms, which most visitors pass without doing anything: no puzzles, no pictures of traffic lights. It is free, and your domain does not need to use Cloudflare. You set it up in **Dbmovies › Settings › Integrations**. ## How it works 1. The form shows a small Turnstile box. In the background, it checks that the visitor is a person, and usually shows **Success** within a second or two. Now and then it asks for a click. 2. When the visitor sends the form, Dbmovies asks Cloudflare whether the check is valid. 3. If it is not, the form is not sent, and the visitor sees a message. Each check works once, and only for the form it was made for. After each answer, the form gets a new one on its own. ## Create your widget in Cloudflare 1. Sign in to the [Cloudflare dashboard](https://dash.cloudflare.com/), or create a free account. 2. Open **Turnstile** and click **Add widget**. 3. Give it a name, such as the name of your site. 4. In **Hostnames**, add your domain, such as `your-website.com`. Add also the domains of your staging or local sites if you want to test there. 5. In **Widget Mode**, choose **Managed**. 6. Click **Create** and copy the **Site Key** and the **Secret Key**. [SCREENSHOT_HERE: Cloudflare dashboard, Turnstile › Add widget, with the hostnames and the Managed mode] ## Settings In **Dbmovies › Settings › Integrations**, section **Cloudflare Turnstile**: | Setting | What it does | Default | |---|---|---| | **Cloudflare Turnstile** | Turns the check on | Off | | **Site key** | The Site Key of your widget. It is public: it goes in the pages of your site | Empty | | **Secret key** | The Secret Key of your widget. It stays on your server. Dbmovies checks it with Cloudflare when you save | Empty | | **Protected forms** | The forms that ask for the check | All four | The check only runs with the switch on and **both keys** saved. ![Dbmovies › Settings › Integrations, Cloudflare Turnstile, with the keys and the protected forms](https://cdn.wupdater.com/dbmovies/docs/022e2cb57359cc4f.webp) ### Protected forms | Form | Where | |---|---| | **Contact form** | The Contact page | | **Sign up** | The sign-up form | | **Sign in** | The sign-in form with email and password | | **Password recovery** | The form that sends the code to reset a password | **Continue with Google** does not need the check: Google verifies those visitors on its side. See [Sign in with Google](https://doothemes.com/docs/dbmovies/integrations/sign-in-with-google). ### Check that it works 1. Open your sign-in page in a private window. The Turnstile box appears above the button and shows **Success**. 2. Sign in. If it works, so do the other forms. ## If Cloudflare does not respond If your server cannot reach Cloudflare when a form is sent, the form goes through. An outage of Cloudflare must not lock your members out. The other defenses of your forms stay on: the limits of attempts and the IP blacklist of the [Firewall](https://doothemes.com/docs/dbmovies/settings/firewall). ## Test on a staging or local site Turnstile only loads on the hostnames of your widget. For a staging or local site, either: - **add its domain** to the **Hostnames** of your widget, such as `staging.your-website.com`; or - **use the test keys of Cloudflare**, which always pass, on that site only: | Key | Value | |---|---| | Site key | `1x00000000000000000000AA` | | Secret key | `1x0000000000000000000000000000000AA` | Never use the test keys on your live site: they do not stop anyone. ## Privacy The check runs in the browser of your visitors, with a script from Cloudflare (`challenges.cloudflare.com`). Cloudflare processes some data of the visitor to tell people from bots. Mention it in your privacy policy. ## Troubleshooting | Problem | What to do | |---|---| | *Cloudflare rejected this Secret key. Copy it again from your Turnstile widget.*, when you save | The Secret Key is wrong. Copy it again from Cloudflare, without spaces | | *The security check could not load (error 110200).* | Your domain is not in the **Hostnames** of the widget. Add it in Cloudflare. Use exactly the domain of your site, with `www` if your site uses it | | *The security check could not load (error 110100)* or *(error 110110)* | The **Site key** is wrong. Copy it again | | *The security check could not load*, with another code | Reload the page. If it keeps happening, look up the code in the Turnstile documentation of Cloudflare | | *Wait for the security check to finish, then try again.* | The visitor sent the form before the box showed **Success**, or an extension blocked the script of Cloudflare | | *The security check failed. Please try again.* | The check expired, was already used, or failed. The form gets a new one: the visitor tries again | | The box does not appear at all | Check that the switch is on, that both keys are saved and that the form is checked in **Protected forms**. If you use a page cache, clear it | # Collections > Collections is the content type for grouping related movies and TV shows on one page, such as a saga or a themed selection. This page explains how to create a collection, add titles to it and configure its address. Source: https://doothemes.com/docs/dbmovies/post-types/collections --- ## Overview A collection groups related titles on one page. Use it to bring together content that belongs together, for example: - the movies of a saga or a franchise; - a shared universe that mixes movies and TV shows; - a curated selection, such as staff picks or a holiday list. Unlike movies and TV shows, a collection does not describe a single title. It is a container: you give it a name and a description, and then you add the titles that belong to it. You find **Collections** in your admin sidebar. From there you see your collections, add new ones, and edit or delete them. ## What a collection holds A collection has two parts: - **Its own information**: a title and a description that present it on your site. - **Its titles**: the movies and TV shows that belong to it. A collection does not copy its titles: it points to movies and TV shows that already exist on your site. A title can belong to several collections at once. Collections have no featured image of their own: your theme can present them with the posters of their titles. ## Adding titles to a collection There are two ways to add a title. Both keep the collection and the title in sync, so a title you add from one side appears on the other. ### From the collection When you edit a collection, the **Related content** box below the editor works as a live search: 1. Click the **Search content** field, or press **Ctrl + Q** to clear it and jump to it. **Esc** closes the results. 2. Start typing the name of a movie or a TV show. The results appear as you type, and the ones that are already in the collection are marked. 3. Click a result to add it. It appears right away in the list below. 4. Repeat for every title you want to include. The list shows each title with its poster, type, release date, and when it was added and last updated. A counter shows how many titles the collection has, and **Load more** (or the down arrow key) shows the rest when the list is long. The titles are ordered from the most recently added or moved. In the **Manage** column of each row: - **move top** moves the title to the top of the collection, which is also the order your site shows. - **Remove** takes the title out of the collection. The movie or TV show stays on your site. ![The Related content box of a collection, with the search results open and the list of titles below](https://cdn.wupdater.com/dbmovies/docs/3549640b499f90cd.webp) ### From a movie or a TV show In the editor of a movie or a TV show, open the **Advanced** box, tab **Relateds**, and choose one or more collections in the **Collections** field. When you save, the title is added to those collections, and removing a collection from the field takes the title out of it. ![The Advanced box of a movie, Relateds tab, with the Collections field](https://cdn.wupdater.com/dbmovies/docs/0d602930b391bd4b.webp) ## The collections list Besides the title and the date, the list has its own columns: | Column | What it shows | |---|---| | **Ratings** | The rating of your visitors and its number of votes | | **View count** | How many times the collection was viewed | | **Related count** | How many titles the collection has | ![Collections list with the Ratings, View count and Related count columns](https://cdn.wupdater.com/dbmovies/docs/651a14b4bcdd6a7a.webp) ## Permalink Every collection has its own address. You choose the word before the collection name in **Settings › Permalinks**, in the **Dbmovies: Post Type** section, field **Type: Collections**. The default is `collections`: ```permalink https://your-website.com/collections/star-wars-universe/ ``` If you leave the field empty, Dbmovies uses the default. Dbmovies refreshes your site addresses on its own when you save. :::info Changing the word changes the address of every collection you already published. Choose it before you open your site. ::: ## What a collection supports - **Title**: the name of the collection on your site. - **Editor**: its description. - **Comments**: turn comments on or off for this collection. - **Author**: the user who published it. - **Related content**: the box where you add and manage its titles. Collections do not use genres, release years or the other classifications: they group titles instead of describing one. # Core modules > Core modules sets how many results the main lists of your site load and how long some of them stay in cache: live search, episodes, links, collections and related content. This page explains what each setting changes and where you see it. Source: https://doothemes.com/docs/dbmovies/settings/core-modules --- ## Overview **Dbmovies › Settings › Core Modules** controls the lists that Dbmovies builds for your theme and for your admin: how many results each one loads at a time and, for some, how long the results stay in cache. It has five sections: **Live search**, **Episodes list**, **Sources list**, **Collections list** and **Related content list**. ## Live search The search window of your theme, which opens from the header or with **Ctrl+K**: the results that appear while a visitor types. | Setting | Default | What it does | |---|---|---| | **Cache duration** | 20 minutes | How long the results of a search stay in cache. 0 turns the cache off | | **Results by query** | 10 | How many results the box shows (1 to 100) | | **Order by** | Post date | **Post date**, **Post title**, **Last modified** or **Relevance**, which puts first the titles that best match the words typed | | **Order** | Descending | **Ascending** or **Descending**. Not used with **Relevance** | The full search page, the one that opens when the visitor presses Enter, has its own filters and order, and shows 18 results per page. Only **Cache duration** applies to it. ![Dbmovies › Settings › Core Modules › Live search, with Cache duration, Results by query, Order by and Order](https://cdn.wupdater.com/dbmovies/docs/7b1d987a572bb782.webp) ## Episodes list | Setting | Default | What it does | |---|---|---| | **Results by query** | 10 | How many episodes a season shows on the TV show page before the **Load more** button | ## Sources list | Setting | Default | What it does | |---|---|---| | **Results by query** | 10 | How many links the **Links** box of the editor shows per page, in movies and episodes | This list is in your admin; it does not change what your visitors see. ## Collections list | Setting | Default | What it does | |---|---|---| | **Results by query** | 10 | How many titles the editor of a collection shows per page, in its box of titles | | **Titles per page** | 12 | How many titles the collection page shows before the **Load more** button (1 to 50) | See [Collections](https://doothemes.com/docs/dbmovies/post-types/collections). ## Related content list The **Related content** block of movie and TV show pages. | Setting | Default | What it does | |---|---|---| | **Cache duration** | 60 minutes | How long the related titles of a movie or TV show stay in cache. 0 turns the cache off | | **Results by query** | 10 | How many related titles load at a time (1 to 50) | Related titles are chosen by relevance: 1. First, the titles that TMDb recommends or finds similar, and that you have on your site. 2. Then, if there are not enough, titles of the same type that share genres with it. Dbmovies prepares up to three pages of related titles for each movie or TV show. ## About Cache duration **Cache duration** keeps the results in the object cache of WordPress, so the same search or the same related titles are not calculated again on every visit. This only works with a persistent object cache, such as Redis or Memcached: without one, WordPress forgets the cache when the page finishes loading, and the setting has no effect. - **Longer**: fewer database queries, but new titles take longer to appear in the results. - **Shorter, or 0**: always fresh results, with more work for your database. The defaults fit most sites. On a site with a lot of traffic and a persistent object cache, a longer duration lowers the load on your server. ![Dbmovies › Settings › Core Modules › Related content list, with Cache duration and Results by query](https://cdn.wupdater.com/dbmovies/docs/275c65a6dbe9dfe2.webp) # Countries > Countries group your movies and TV shows by production country. This page explains how the country is imported and how to configure the address of the country pages. Source: https://doothemes.com/docs/dbmovies/taxonomies/countries --- ## Overview Countries group your movies and TV shows by the country where they were produced, so your visitors can browse, for example, all your Korean or Spanish titles. You find **Countries** in the **Movies** and **TV Shows** menus. ## How the country is imported When you import a title, Dbmovies adds its **main production country** from TMDb, if **Countries** is checked in **Dbmovies › Settings › Data Importer › Initial settings › Taxonomies**. - **One country per title.** A title produced in several countries gets only the first one, its main country. - **Name.** Country names come from TMDb as they are, and each country is created only once. To add more countries to a title, check them in its editor. ## Permalink You choose the word before the country in **Settings › Permalinks**, section **Dbmovies: Taxonomies**, field **Taxonomy: Countries**. The default is `country`: ```permalink https://your-website.com/country/south-korea/ ``` Changing the word changes the address of every country page. Choose it before you open your site. # Cron Jobs > Dbmovies runs its maintenance tasks in the background with WP-Cron. This page lists every task and what it does, explains how to change its frequency, turn it off or run it right away, and how to set up a server cron job so tasks run on time. Source: https://doothemes.com/docs/dbmovies/tools/cron-jobs --- ![Dbmovies › Tools › Cron jobs, with the list of tasks, their frequency, next run and last run](https://cdn.wupdater.com/dbmovies/docs/edf7b772540546f6.webp) ## Overview Dbmovies keeps your site in shape with tasks that run in the background: it checks your licenses, syncs PayPal subscriptions, expires featured content, cleans up temporary data and more. These tasks use **WP-Cron**, the scheduler built into WordPress. You manage them in **Dbmovies › Tools › Cron jobs**. ## How WP-Cron works WP-Cron does not run on a clock. It runs when someone visits your site: on each visit, WordPress checks which tasks are due and runs them. - **On a busy site**, tasks run almost on time. - **On a site with few visits**, tasks run late, or only when someone comes by. That is why we recommend a **server cron job** that calls WordPress every minute, so tasks run on time whether you have visitors or not. See [Setting up a server cron job](#setting-up-a-server-cron-job). ## The task list Each row shows: - **The switch**: turns the task on or off. - **Task**: its name and what it does. - **Frequency**: how often it runs. - **Next run**: the time left until it runs again. A disabled task shows a dash. - **Last run**: how long ago it ran, or **never**. - **Run**: runs the task right away. ### Change how often a task runs Choose a value in **Frequency**: **Every 10 min**, **Every 15 min**, **Hourly**, **Twice daily**, **Daily** or **Weekly**. The change is saved right away, and the task is scheduled again from that moment. ### Turn a task off Turn off its switch. The task stops running until you turn it on again, and its row is dimmed with the name struck through. **Run** still works on a disabled task, so you can run it by hand when you need it. ### Run a task now Click **Run**. The task runs at that moment and **Last run** is updated. Its schedule does not change. This is useful to see the effect of a task without waiting, for example to sync a PayPal subscription after a payment. ## Tasks | Task | Default frequency | What it does | |---|---|---| | **Auth Client Check** | Hourly | Checks the status of your licenses with the Doothemes server, so a renewal or an expiration shows up on its own. | | **Auth Cleanup** | Hourly | Deletes expired sign-in and verification codes, and the accounts that were not verified within one hour of signing up. | | **Most Viewed Cleanup** | Hourly | Deletes the view records older than one day, which feed the most viewed list. | | **Ratings Cleanup** | Hourly | Deletes temporary rating data that is no longer needed. | | **Subscriptions Tick Expired** | Twice daily | Marks subscriptions as expired when their end date passes, and emails a reminder to members whose manual subscription ends within 7 days. | | **PayPal Reconcile** | Hourly | Syncs subscriptions with PayPal (new charges, renewals and cancellations) and removes checkouts that were never approved. | | **Payment Stats Warmup** | Every 15 min | Prepares the payment charts, so **Dbmovies › Payments** opens fast. | | **Ad Totals Snapshot** | Every 10 min | Updates the total impressions and clicks of each ad. | | **Featured Content Expire** | Daily | Removes the featured mark from titles whose 30 days have passed. | | **Orphan Sources Links Cleanup** | Weekly | Deletes links whose title no longer exists. | The default frequencies fit most sites. If you change one, a shorter frequency keeps data fresher but adds work to your server. :::note Some tasks are better left on: - **Auth Client Check**: without it, renewals, upgrades and expirations of your licenses are not updated. You can still check a license by hand with **Check now** in **Dbmovies › Updates**. - **PayPal Reconcile** and **Subscriptions Tick Expired**, if you sell subscriptions: without them, renewals and cancellations made in PayPal do not reach your site, and expired subscriptions stay active. ::: ### Other background tasks **Automatic episodes** and the automatic **Meta Updater** also run in the background with WP-Cron, but they are not part of this list. Turn them on and set how often they run in their own settings. See [Metaupdater](https://doothemes.com/docs/dbmovies/tools/metaupdater). ### When you deactivate Dbmovies Deactivating the plugin removes its tasks from WP-Cron. Your frequencies and the tasks you turned off are kept, and the tasks are scheduled again when you activate the plugin. ## Setting up a server cron job A server cron job calls `wp-cron.php` every minute, so tasks run on time. It takes two steps. ### 1. Turn off the visit-based WP-Cron Open the `wp-config.php` file of your site and add this line before `/* That's all, stop editing! */`: ```php define('DISABLE_WP_CRON', true); ``` From then on, visits no longer run tasks: the server cron job does. ### 2. Create the server cron job In your hosting panel, open **Cron Jobs** (in cPanel, Plesk and most panels it has that name) and create a job that runs **every minute** with this command. Replace `your-website.com` with your domain: ```bash wget -q -O - "https://your-website.com/wp-cron.php?doing_wp_cron" >/dev/null 2>&1 ``` If your server does not have `wget`, use `curl`: ```bash curl -s "https://your-website.com/wp-cron.php?doing_wp_cron" >/dev/null 2>&1 ``` With SSH access, you can add it to the crontab as `* * * * *` followed by the command. If your server has WP-CLI, `wp cron event run --due-now --path=/path/to/wordpress` works too. :::note Do step 1 only after step 2 works. With `DISABLE_WP_CRON` and no server cron job, no task runs: licenses are not checked, subscriptions do not sync and the background tasks stop. ::: ## Check that tasks run on time Go to **Tools › Site Health** and open the **Dbmovies** tab. In **Overview**, the **WP-Cron** row shows: - **Disabled — a server cron runs the tasks**: the recommended setup. - **Enabled — tasks run on page visits; a server cron is recommended**: it works, but tasks can run late on a site with few visits. - **Tasks are … late**: a task is more than 15 minutes overdue. If WP-Cron is disabled, your server cron job is not running: check it in your hosting panel. If it is enabled, your site does not get enough visits: set up a server cron job. In **Scheduled tasks**, each task shows its frequency, when it runs next and when it ran last. A task marked **Enabled but not scheduled** is not running. Dbmovies schedules missing tasks again on the next page load, so reload the page; if the mark stays, [open a support ticket](https://doothemes.com/account/tickets/new). ![Tools › Site Health › Dbmovies, with the WP-Cron row in Overview and the Scheduled tasks section](https://cdn.wupdater.com/dbmovies/docs/577626f38b771f51.webp) ## Troubleshooting - **Last run says "never" or is far behind.** WP-Cron is not running. Check the **WP-Cron** row in Site Health and set up a server cron job. - **The Automatic episodes queue does not move**, and it warns that WP-Cron has not run for more than 5 minutes. Same cause: your site needs visits or a server cron job. # Custom badges > Badges are the short labels shown on the posters and pages of your titles: quality, language and a highlight message. This page explains how to set up the quality and language lists, how to assign badges, and how message badges and their expiration work. Source: https://doothemes.com/docs/dbmovies/settings/custom-badges --- ## Overview Badges are short labels that tell your visitors something about a title at a glance. There are three: - **Quality badge**: the best quality available, such as **4K** or **HD**. - **Language badge**: the main audio language, such as **EN** or **LAT**. - **Message badge**: a short highlight, such as **New season** or **Leaving soon**, with an optional end date. You define the quality and language lists in **Dbmovies › Settings › Main settings**, section **Custom badges**. Then you choose the badges of each title. ![Dbmovies › Settings › Main settings, section Custom badges, with the Quality badge and Language badge fields](https://cdn.wupdater.com/dbmovies/docs/afbc4403f0b7f0e0.webp) ## Quality and language lists Each list is a text field with the badges separated by commas: | Setting | Default value | |---|---| | **Quality badge** | `4K,2K,HD,SD,CAM,TS,TC,R5` | | **Language badge** | `EN,ES,FR,DE,IT,PT,RU,JA,ZH,LAT` | - **Keep them short.** Badges are shown on posters, where there is little room: two to four characters work best. - **Order matters.** The badges appear in the selectors in the same order as in the list. - **Spaces and extra commas are ignored.** `HD, SD` and `HD,SD` give the same list. - **Leave a field empty** to stop using that badge: titles can then only choose **None**. The lists are shared by movies, TV shows and episodes. ### Changing the lists You can add badges at any time, and they are available for all your titles right away. Removing or renaming a badge needs more care. Titles that already have the old badge keep showing it, because each title saves its own badge. But when you open one of those titles, its selector cannot find the old badge and shows **None**. If you save the title without choosing a new one, the badge is removed. To rename a badge, for example from `TS` to `CAM`, add the new one first, change the titles that use the old one, and then remove it from the list. ## Assigning badges to a title - **Movies and TV shows**: in the **Advanced** box of the editor, **Quality Badge** and **Language Badge**. - **Episodes**: in the **Metadata** box, **Main data** tab. - **From the lists**: the **Movies**, **TV Shows** and **TV Episodes** lists have a **Badges** column with the badges of each title. New titles are imported with **None**, and updating a title with the Meta Updater does not change its badges. ### Quick Edit To change the badges of a title without opening it, hover it in the list and click **Quick Edit**. The **Quality** and **Language** selectors open with the current badges of the title: change the one you need and click **Update**. :::note In Dbmovies 1.3.36 and earlier, the selectors of Quick Edit always open on **None**. Choose both badges again before you click **Update**, or the title loses them. Update to Dbmovies 1.3.37 to fix it. ::: Badges are changed one title at a time: **Bulk Edit** does not include them. ![Quick Edit of a movie in the list, with the Quality and Language selectors showing its current badges](https://cdn.wupdater.com/dbmovies/docs/53102c912991e5fe.webp) ## Message badges The **Message Badge** highlights a title for a while. Choose it in the **Advanced** box of a movie or TV show: | Field | What it does | |---|---| | **Message Badge** | The message: Newly added, New release, New audio, New quality, New language, New links, Upcoming, Leaving soon, Only in theaters, Exclusive, Premium, Emmy winner, Oscar winner, New season or New episode | | **Custom Badge Class** | Optional CSS classes for the badge. In Wovie, a Font Awesome icon works too: `fas-before fa-fire` shows a flame before the text | | **Badge message expiration** | The date and time when the badge stops showing. It is filled in with one week from now; empty it to keep the badge without an end date | The messages are a fixed list, translated with the plugin. When the expiration date passes, the badge disappears from your site on its own: you do not need to edit the title. ![The Advanced box of a movie, with Quality Badge, Language Badge, Message Badge, Custom Badge Class and Badge message expiration](https://cdn.wupdater.com/dbmovies/docs/58f2be65e47a0539.webp) ## Where badges appear With the Wovie theme: - **Posters**: quality, language and message badges on the cards of the home page and the archives, and quality and language on the titles of a collection. - **Movie and TV show pages**: quality and language next to the details of the title, and in its details panel as **Quality** and **Audio**. - **Episodes**: the quality and language of each episode in the season list of the TV show. Other themes can read the same badges from the Dbmovies API. # Data importer > Data importer holds the settings of the importers: your TMDb API key, the proxy, the status and date of imported titles, the import language and which taxonomies are imported. This page explains each one and maps the rest of the Data Importer sections. Source: https://doothemes.com/docs/dbmovies/settings/data-importer --- ## Overview **Dbmovies › Settings › Data Importer** groups the settings of everything that brings data from TMDb and IMDb into your site. It has six sections: | Section | What it sets | |---|---| | **Initial settings** | Your TMDb API key, the proxy, the status and date of imported titles, the language and the taxonomies. Explained on this page | | **Images** | Which images are downloaded to your media library. See [Import images](https://doothemes.com/docs/dbmovies/settings/import-images) | | **Limits** | How much cast, crew and other data is imported per title. See [Import limits](https://doothemes.com/docs/dbmovies/settings/import-limits) | | **Titles** | The title, address and content of imported titles. See [Titles and content](https://doothemes.com/docs/dbmovies/settings/titles-and-content) | | **Meta Updater** | Updating your titles automatically. See [Metaupdater](https://doothemes.com/docs/dbmovies/tools/metaupdater) | | **Automatic episodes** | Importing new episodes of your TV shows on their own | Settings are saved only with an active license. See [License activation](https://doothemes.com/docs/dbmovies/license-activation). ![Dbmovies › Settings › Data Importer › Initial settings, with the TMDb API key, the proxy and the post status options](https://cdn.wupdater.com/dbmovies/docs/42aa40c450f17fc0.webp) ## TMDb API key **Themoviedb.org API Key** is the key the importers use to read TMDb. Without it, they cannot import anything. Paste the **API Key** from your TMDb account (Settings › API). The field checks it with TMDb as you type: it turns green if the key works, and red with the reason if it does not. Importing with your own key does not use your daily requests. See [Initial settings](https://doothemes.com/docs/dbmovies/initial-settings#1-add-your-tmdb-api-key) to get one. ## TMDb API proxy server Some servers cannot reach TMDb, because of their hosting provider or their country. Turn on **TMDb API proxy server** and Dbmovies requests TMDb through the Doothemes server instead. - **It needs an active license.** Without one, Dbmovies connects to TMDb directly. - **It uses your daily requests**, and adds a little time to each import. - **Use it only if you need it.** If importing works without it, leave it off. **Tools › Site Health › Dbmovies** shows whether the proxy is on. ## Status of imported titles **Importers Post Status** sets the status that new titles get when you import them, one setting for each type: **Movies**, **TVShows** and **Episodes**. | Status | What happens | |---|---| | **Publish** | The title is visible on your site right away. The default | | **Pending** | The title waits for review in your admin | | **Draft** | The title is saved as a draft | It only applies to new imports. Updating a title keeps the status it has. ## Language **Language** is the language of the data you import from TMDb: titles, synopses, genres and the names of the cast. Posters, backdrops and logos are chosen in that language, or without text. When TMDb has no translation of a title into your language, some data comes without it: the synopsis can arrive empty, and the title in its default form, usually English. You can complete it by hand in the editor, or add the translation on TMDb so the next update brings it. Choose it before you start importing. Changing it later affects new imports and updates, but titles already imported keep their language until they are updated. ## Taxonomies **Taxonomies** chooses which taxonomies are filled in when you import a title: - **Tags**: the keywords of TMDb. - **Genres**. - **Release years**. - **Countries**. - **Persons**: the cast and crew, with their person pages. All are checked by default. If you uncheck one, imports skip it. Updates add the new terms that TMDb brings, but never remove the ones a title already has. This keeps the terms you added by hand. Persons are the exception: the cast and crew always follow the credits of the title. ## Publish with release date **Publish with release date** uses the release date of each title as its publish date, for the types you check: **Movies**, **TVShows** and **Episodes**. All are checked by default. - **Your lists follow the release dates.** On your site, titles sorted by date appear in the order they were released, not in the order you imported them. - **Future dates are scheduled.** A title whose release date is in the future is saved as **Scheduled**, and WordPress publishes it on its release date. If you want upcoming titles to be visible right away, uncheck its type before importing. - **Updates apply it too.** When a title is updated, its date changes to the release date if TMDb changed it. If the option is off, updating keeps the date the title has. :::note Decide this setting before you import. Changing it later does not change the dates of the titles you already have: only new imports, and titles that are updated while it is on, get the release date. ::: ![Dbmovies › Settings › Data Importer › Initial settings, with Language, Taxonomies and Publish with release date](https://cdn.wupdater.com/dbmovies/docs/ebe823174f717af8.webp) # Deploy CDN Server > CDN-TMDb is our free, open source image server: it serves the images of your titles from your own domain and keeps them out of WordPress. This guide explains what you gain, compares it with the other image modes in real numbers, and shows how to deploy it and connect it to Dbmovies. Source: https://doothemes.com/docs/dbmovies/guides/deploy-cdn-server --- ## Overview Every page of a movie site is full of images: posters, backdrops, logos, episode images and photos of the cast. Where they come from matters more than anything else for the weight of your site. **CDN-TMDb** is our free, open source image server. You install it on a subdomain, such as `cdn.your-website.com`, and Dbmovies loads every image through it: 1. The first time a visitor asks for an image, CDN-TMDb downloads it from TMDb and stores it on its disk. 2. From then on, the server sends the stored file directly, as a static file, without running any code. Your images live on your own domain, and WordPress never has to handle them. For any site that plans to grow, it is the image mode we recommend. ## What you gain - **Your WordPress database stays light.** No image enters WordPress: no media library, no attachment rows, and no extra queries when a list of posters is built. - **Your WordPress server only serves pages.** Images are most of the weight of a page, and they go to the CDN server. WordPress answers fewer requests and uses less bandwidth. - **Nothing extra at import.** The importer does not download, convert or resize any image, so importing stays fast. - **Your images on your own domain,** with a browser cache of one year: a visitor who comes back does not download them again. - **Independent from TMDb.** Once stored, an image keeps loading if TMDb is slow, down, or blocked on a visitor's network. - **Images that TMDb removes are kept.** TMDb removes images from time to time. CDN-TMDb notices it and keeps its copy forever. - **One server for all your sites.** Each image is downloaded once and serves every site you connect. - **Under your control.** You can allow only your own domains, see how many images are stored and clean them up. ## Compare the image modes Dbmovies can show images in three ways (see [Import images](https://doothemes.com/docs/dbmovies/settings/import-images)): - **TMDb directly**, the default: images load from `image.tmdb.org`. - **Your CDN:** images load from your CDN-TMDb server. - **Upload to your server:** the importer copies the poster of each title, and the image of each episode, to your media library. ### What each uploaded image costs We measured it on a Dbmovies site with Wovie. Image weights are the average of real posters and episode images from TMDb. Database rows and processing time come from uploading test images the same way the importer does. | For each uploaded image | Cost | |---|---| | Database rows | 4: 1 in `wp_posts` and 3 in `wp_postmeta`, about 1 KB of data | | Files on your server | 3: the image and two smaller sizes | | Processing at import | About 0.7 seconds, plus the download | | Space for a poster, with its sizes | About 325 KB | | Space for an episode image, with its sizes | About 90 KB | | Database queries to show it in a list, without Redis | 2 | ### For a whole catalog A catalog of **10,000 movies and TV shows** and **100,000 episodes**, with the uploads of posters and episode images turned on: | | TMDb directly | Your CDN | Upload to your server | |---|---|---|---| | Rows added to your database | 0 | 0 | **440,000** | | Data added to your database | 0 | 0 | **About 120 MB**, plus indexes | | Files on your WordPress server | 0 | 0 | **330,000** | | Space on your WordPress server | 0 | 0 | **About 12 GB** | | Extra processing to import the catalog | None | None | **About 21 hours**, plus the downloads | | Extra database queries for a list of 20 posters, without Redis | 0 | 0 | **40** | | Image requests your WordPress server answers for that list | 0 | 0 | **20**, about 1.6 MB | | Size of your backups | Unchanged | Unchanged | **About 12 GB more** | | Images on your own domain | No | **Yes** | Yes | | If TMDb is slow or down | Images do not load | **Stored images keep loading** | Images keep loading | | If TMDb removes an image | It is lost | **It is kept**, if your CDN already stored it | It is kept | Some notes on the numbers: - **The space is measured as JPEG.** With the WebP converter, which is on by default, the files weigh less, but the number of files and database rows does not change. - **Backdrops, logos and cast photos** are never uploaded: in every mode they come from TMDb or from your CDN. - **The extra queries** are the lookups of each image in the database. With [Redis](https://doothemes.com/docs/dbmovies/guides/redis-cache) they become lookups in memory, but the media library still has to be stored, backed up and served. ### How to read it - **TMDb directly and your CDN** are equally light for WordPress: neither adds anything to your database or your server. - **Your CDN** adds what TMDb directly cannot give you: your own domain, a long browser cache, independence from TMDb and the images TMDb removes. - **Uploading** gives you control too, but its costs grow with every title you import, and they stay in your database, your disk and your backups. ## What you need - **A server for the CDN** with Apache, PHP 8.1 or newer and the `curl` extension. - Apache needs `mod_rewrite` and `mod_expires`, and we recommend `mod_headers`. - It does not need a database. A small VPS or a hosting account is enough, and it can be the same server as your site. - LiteSpeed reads the same `.htaccess`. With nginx in front of Apache, as in Plesk, add a few rules to nginx too: see [If nginx serves your files](#if-nginx-serves-your-files). On nginx alone, the rules of `.htaccess` have to be translated. - **A subdomain with HTTPS,** such as `cdn.your-website.com`. - **Disk space** for the images your visitors view. CDN-TMDb stores only the images that are requested, and deletes the ones nobody viewed in 30 days. - **SSH access** to generate the access token and schedule the cleanup. Without it, you can edit the files by hand. ## Deploy the server 1. **Create the subdomain** in your hosting panel or your DNS, with an empty folder as its document root, and turn on its HTTPS certificate. 2. **Put CDN-TMDb in that folder.** With SSH: ```bash cd /path/to/cdn.your-website.com git clone https://github.com/doothemes/CDN-TMDb.git . ``` Without SSH, download the latest version as a ZIP: **[Download CDN-TMDb](https://github.com/doothemes/CDN-TMDb/archive/refs/heads/main.zip)**. Extract it and upload the content of its `CDN-TMDb-main` folder to the document root, not the folder itself. Include the hidden files, such as `.htaccess`: some FTP programs and file managers hide them. You can see what changed in each version in the [releases](https://github.com/doothemes/CDN-TMDb/releases). 3. **Create the configuration file:** ```bash cp .env.example .env ``` 4. **Generate the access token.** This command writes a random `API_SECRET` into `.env` and shows it. Copy it: you need it to connect Dbmovies. ```bash php rotate-token.php ``` Without SSH, edit `.env` and set `API_SECRET` to a long random value. 5. **Review the other settings** in `.env`. The defaults fit most sites: | Setting | What it does | Default | |---|---|---| | `MAX_INACTIVE_DAYS` | Days without visits before the cleanup deletes an image | `30` | | `CORS_ORIGIN` | Which sites can load the images from code. `*` allows all | `*` | | `NEGATIVE_CACHE_TTL` | Seconds to remember an image TMDb does not have, so it is not asked again | `3600` | | `LOG_MAX_SIZE_MB` | Size of a log before it is rotated | `5` | | `LOG_KEEP_FILES` | How many old logs are kept | `5` | | `MAX_HEAD_REQUESTS_PER_RUN` | How many images each cleanup checks with TMDb, at most | `500` | 6. **Schedule the cleanup.** Add this line to the crontab of the server. It runs every day at 3:00: ```bash 0 3 * * * php /path/to/cdn.your-website.com/cron.php >> /var/log/cdn-cleanup.log 2>&1 ``` The cleanup deletes the images nobody viewed in `MAX_INACTIVE_DAYS`. Before deleting one, it asks TMDb if it still has it. If TMDb no longer has it, the image is marked as **archival** and kept forever. 7. **Optional: allow only your sites.** The `.htaccess` has an anti-hotlink block, off by default. To turn it on, remove the `###` at the start of its lines and write your domains. Visits with no referrer, such as apps and search engines, are still allowed. ### If nginx serves your files On some servers, nginx sits in front of Apache and sends existing files on its own, without reading `.htaccess`. In Plesk, that happens with **Smart static files processing** or **Serve static files directly by nginx**. Then the rules of CDN-TMDb that block its private files do not apply, and you need to add them to nginx too: ```nginx location ~ /\.(?!well-known/) { deny all; } location ^~ /logs/ { deny all; } location ~ \.(tmp|lock)$ { deny all; } ``` In Plesk, paste them in **Apache & nginx Settings › Additional nginx directives** of the subdomain. They block the same files as `.htaccess`: hidden files and folders such as `.env` and `.git`, the `logs` folder, and temporary files. They let `.well-known` through, which Let's Encrypt uses to renew your certificate. ### Check the server 1. Open the test image in your browser: `https://cdn.your-website.com/t/p/w92/pB8BM7pdSp6B6Ih7QZ4DrQ3PmJK.jpg`. You see the poster of *Fight Club*. 2. Open `https://cdn.your-website.com/.env`, or run `curl -I https://cdn.your-website.com/.env` in a terminal. You must get an error: **403 Forbidden**. CDN-TMDb blocks its configuration, its logs and the `.git` folder. If you see the content of the file instead: - your copy of CDN-TMDb is older than 1.2.0: update it (see [Keep it running](#keep-it-running)); - or nginx sends the file before Apache reads `.htaccess`: add the rules of [If nginx serves your files](#if-nginx-serves-your-files). In both cases, check again until you get 403, then generate a new token with `php rotate-token.php` and paste it in Dbmovies: the old one was visible. ## Connect Dbmovies 1. Go to **Dbmovies › Settings › Data Importer › Import Images**. 2. In **CDN server**, enter the address of your CDN, such as `https://cdn.your-website.com`, without `/t/p/` and without a slash at the end. 3. In **CDN access token**, paste the `API_SECRET` of your server. The token stays in your WordPress admin: visitors never see it. 4. Click **Save**. Dbmovies loads the test image through your CDN. If it fails, the address is not saved and a message tells you why. 5. Click **Test connection** to see how many images your CDN stores and how much space they use. [SCREENSHOT_HERE: Dbmovies › Settings › Data Importer › Import Images, with CDN server, CDN access token and the result of Test connection] From then on, every image of your site loads from your CDN. If you use a page cache, clear it so the pages are built with the new addresses. **If you were uploading images to your server,** uncheck **Upload featured images**, so new imports stop copying them. Titles that already have an uploaded featured image keep showing it, because a featured image comes before the CDN. ## Keep it running | Task | How | |---|---| | See what is stored | **Test connection** in Dbmovies, or `curl -H "X-Api-Key: YOUR-TOKEN" https://cdn.your-website.com/get_stats` | | Free space | The daily cleanup does it on its own. **Clear cache** in Dbmovies deletes every stored image except the archival ones | | Start from zero | **Delete all** in Dbmovies deletes everything, archival images included. They cannot be recovered | | Change the token | Run `php rotate-token.php` on the server, then paste the new token in **CDN access token** | | Update CDN-TMDb | In its folder, run `git pull`. Your `.env`, your stored images and your logs are kept. Without SSH, [download the latest version](https://github.com/doothemes/CDN-TMDb/archive/refs/heads/main.zip) and replace the files, except `.env` and the `t/` and `logs/` folders | | Find download errors | Read `logs/error.log` on the server | | Move to another server | Copy the whole folder, including `t/`, where the images are stored. Archival images exist only there | [SCREENSHOT_HERE: The result of Test connection, with the number of stored images, archival images and the space used] ## One CDN for several sites Connect all your Dbmovies sites to the same CDN, with the same address and token in each one. Each image is downloaded once and serves all of them. If you turn on the anti-hotlink block, add the domain of each site. ## Troubleshooting When you save the CDN server, Dbmovies shows one of these messages if something is wrong: | Message | What to do | |---|---| | *Enter the full address of the CDN server, starting with https://.* | Write the full address, such as `https://cdn.your-website.com` | | *The address … could not be found.* | The subdomain does not exist yet, or its DNS has not spread. Wait a few minutes and try again | | *The CDN server must use https://* | Turn on HTTPS for the subdomain: your site uses HTTPS and browsers would block the images | | *The CDN server did not respond: …* | The server is down, a firewall blocks it, or its certificate is not valid | | *The CDN server answered with HTTP 404 instead of the test image.* | The `.htaccess` is not active: check that `mod_rewrite` is on and that the folder allows `.htaccess` files (`AllowOverride All`) | | *The CDN server answered with HTTP 500 instead of the test image.* | `.env` is missing, the PHP version is older than 8.1, or the `curl` extension is missing | | *The CDN server responded, but not with an image.* | The address opens a different site. Check that the document root of the subdomain is the CDN-TMDb folder | # Episodes > Episodes is the content type for the episodes of your TV shows. This page explains how an episode connects to its TV show, how episodes are created, what each part of the editor does, and what happens to episodes when their TV show is trashed or deleted. Source: https://doothemes.com/docs/dbmovies/post-types/episodes --- ## Overview An episode is one chapter of a series. Each episode is its own content on your site, with its own page, title and details, but it always belongs to a TV show and to a season. Episodes are the third level of a series: - **The TV show** is the parent record. - **The seasons** are stored inside the TV show. - **The episodes** are separate content, linked to the TV show. You find the episodes in the **TV Shows** menu, under **TV Episodes**. They have no menu of their own, because every episode depends on a TV show. ## How episodes are created Adding every episode by hand would be slow, so Dbmovies creates them from TMDb, already linked to their TV show and numbered: - **Automatic episodes**: every TV show you import queues its aired episodes, which are created in the background, season by season. - **The seasons manager**: from the **Seasons** column of the TV shows list, import the episodes of one season or of all of them at once. Both are explained in [TV Shows › Importing the episodes](https://doothemes.com/docs/dbmovies/post-types/tvshows#importing-the-episodes). For each episode, Dbmovies: - links it to its TV show and sets its season and episode numbers; - brings in its name, synopsis, air date, runtime and image; - builds its title and address from the pattern in your [Titles and content](https://doothemes.com/docs/dbmovies/settings/titles-and-content) settings; - never creates the same episode twice. The seasons manager updates an episode that already exists, and Automatic episodes skips it. The image of each episode is uploaded to your media library only if **Import Images** is set to upload episode images. See [Import images](https://doothemes.com/docs/dbmovies/settings/import-images). You can also create an episode by hand with the add button at the top of the **TV Episodes** list, and edit any episode afterwards. ## How an episode connects to its TV show In the **Main data** tab of an episode, three fields place it inside its series: - **TV Show**: the series it belongs to. Start typing its name and choose it from the list. - **Season Number**: the season it belongs to. - **Episode Number**: its position in that season. With these three values, your site shows the episode in the right TV show and in the right order. ## The episodes list Besides the title and the date, the list has its own columns: | Column | What it shows | |---|---| | **View count** | How many times the episode was viewed | | **Sources** | How many links the episode has | | **Episode Name** | The name of the episode, as it comes from TMDb | | **Meta Updater** | An **Update** button that refreshes the episode from TMDb right away | You can sort the list by **View count** and **Sources**. ![TV Episodes list with the View count, Sources, Episode Name and Meta Updater columns](https://cdn.wupdater.com/dbmovies/docs/840ec507ac593d64.webp) ## Permalink Every episode has its own address. You choose the word before the episode name in **Settings › Permalinks**, in the **Dbmovies: Post Type** section, field **Type: Episodes**. The default is `episodes`: ```permalink https://your-website.com/episodes/ahsoka-season-1-episode-1/ ``` Dbmovies also adds an address for each episode inside its TV show, which your theme can use: ```permalink https://your-website.com/tvshows/ahsoka/season1/episode1/ ``` If you leave the field empty, Dbmovies uses the default. Dbmovies refreshes your site addresses on its own when you save. :::info Changing the word changes the address of every episode you already published. Choose it before you open your site. ::: ## Editing an episode The episode editor has the standard WordPress fields and two Dbmovies boxes: **Metadata** and **Sources**. ### Standard WordPress fields - **Title**: the title of the episode on your site. - **Editor**: its synopsis. - **Featured image**: the image of the episode. - **Comments**: turn comments on or off for this episode. - **Author**: the user who published it. Episodes created by Automatic episodes take the author of their TV show. ### Metadata - **Main data**: the link to its series (**TV Show**, **Season Number** and **Episode Number**), plus the TMDb ID, the **Quality Badge**, the **Episode name**, the **Air date** and the **Runtime** in minutes. - **Images**: the main backdrop and more backdrops. The **Quality Badge** can be **None**, **4K**, **2K**, **HD**, **SD** or **CAM**. We suggest the highest quality available for the episode. ![The Metadata box of an episode, Main data tab, with TV Show, Season Number, Episode Number and the Quality Badge](https://cdn.wupdater.com/dbmovies/docs/80d367c3627cdc16.webp) ### Sources The **Sources** box holds the links of the episode: streaming embeds, downloads and direct MP4 files. It works as in movies: 1. Click **Add Link(s)**. 2. Paste one or more URLs, one per line. 3. Choose the **Type**, **Language** and **Quality**. For downloads, you can also set the **File size** and a **Password**. 4. Check **Available only for premium users** if only members can use these links. 5. Click **Add Link(s)**. You can also load the links of many episodes at once from an Excel or CSV file, matching each row by the TMDb or IMDb ID of the TV show and the season and episode numbers. See [Link sources](https://doothemes.com/docs/dbmovies/modules/link-sources). [Auto-Embed](https://doothemes.com/docs/dbmovies/settings/auto-embed-support) links are added to every episode on the fly and are not listed in this box. Episodes have no switch of their own: they follow the **Auto-Embed** switch of their TV show. ![The Sources box of an episode, with its list of links](https://cdn.wupdater.com/dbmovies/docs/a4e6b0a18b56688a.webp) ## When a TV show is trashed or deleted Episodes follow their TV show: - **Moving a TV show to the trash** moves its episodes too. - **Restoring it** brings those episodes back, with the status they had. Episodes that were already in the trash before stay there. - **Deleting it permanently** deletes its episodes, together with their links, votes and the images uploaded for them. - **Importing a TV show again** after deleting it adopts the episodes that were left without a TV show, so it gets its episodes and links back instead of starting empty. On a TV show with many episodes, Dbmovies finishes the work in the background, in short runs. ## Keeping episodes up to date - **One episode**: click **Update** in the **Meta Updater** column of the list. - **All your episodes**: include **Episodes** in the post types of the automatic [Meta Updater](https://doothemes.com/docs/dbmovies/tools/metaupdater). # Extend permalink > A step-by-step guide to configuring the addresses of your Dbmovies site: the permalink structure of WordPress, the base of each type of content, the permalink template of your titles and the pages of the member area, with complete examples and what to keep in mind once your site is published. Source: https://doothemes.com/docs/dbmovies/guides/extend-permalink --- ## Overview You can configure every part of the addresses of your Dbmovies site: the word before your movies, the way the name of each title is written, the pages of the member area and more. This guide goes through each part step by step, shows complete setups you can copy, and explains what to keep in mind once your site is published. The best time to do this is before you import your catalog and open your site. Changing addresses later is possible, but it takes extra work: see [Change an address on a published site](#change-an-address-on-a-published-site). ## The parts of an address Take the address of a movie: ```permalink https://your-website.com/movies/1234-fight-club ``` - `movies` is the **base**. You set it in **Settings › Permalinks**, for each type of content and each taxonomy. - `1234-fight-club` is the **permalink** of the title. Dbmovies writes it when it imports the title, from a template. - Anything between your domain and the base comes from the **permalink structure of WordPress**. With the recommended structure, there is nothing. You set each part in its own step. ## Step 1: The permalink structure of WordPress Go to **Settings › Permalinks**. Under **Permalink structure**, the option you choose changes the addresses of your blog posts, and it can also change the addresses of Dbmovies: | Structure | The address of a movie | |---|---| | **Plain** | Not supported. Sign in, the member account and the search need pretty permalinks | | **Day and name**, **Month and name** or **Post name** | `/movies/1234-fight-club/` | | **Numeric**, `/archives/%post_id%` | `/archives/movies/1234-fight-club` | | **Custom Structure**, `/%postname%` (recommended) | `/movies/1234-fight-club` | | **Custom Structure**, `/blog/%postname%/` | `/blog/movies/1234-fight-club/` | Two things come from the structure: - **A fixed word at the start**, such as `/archives/` or `/blog/`, goes before every Dbmovies address too. - **The slash at the end:** if the structure ends with `/`, every address of your site ends with `/`. We recommend **Custom Structure** with `/%postname%`, without a slash at the end. See [Initial settings](https://doothemes.com/docs/dbmovies/initial-settings#2-permalinks). ## Step 2: The bases On the same page, scroll down to the **Dbmovies: Post Type** and **Dbmovies: Taxonomies** sections. Each field is the base of one type of content or taxonomy: | Field | Default | Address | |---|---|---| | **Type: Movies** | `movies` | `/movies/1234-fight-club` | | **Type: TVShows** | `tvshows` | `/tvshows/1235-ahsoka` | | **Type: Episodes** | `episodes` | `/episodes/1236-ahsoka-se-1-ep-1` | | **Type: Collections** | `collections` | `/collections/star-wars` | | **Taxonomy: Genres** | `genre` | `/genre/action` | | **Taxonomy: Releases** | `release` | `/release/2024` | | **Taxonomy: Countries** | `country` | `/country/japan` | | **Taxonomy: Persons** | `person` | `/person/pedro-pascal` | - **Lists:** the base of movies, TV shows and collections is also the address of their full list: `/movies/`, `/tvshows/` and `/collections/`. - **Episodes:** when a visitor opens the address of an episode, Dbmovies takes them to its TV show, at that episode: `/tvshows/1235-ahsoka/?season=1&episode=1`. - **Tags:** tags are the tags of WordPress. Their base is **Tag base**, in the **Optional** section of the same page, and it is `tag` by default. Write the words you want and click **Save Changes**. Dbmovies refreshes the addresses of your site on its own. ![Settings › Permalinks, with the Dbmovies: Post Type and Dbmovies: Taxonomies sections](https://cdn.wupdater.com/dbmovies/docs/48d88f89d212f412.webp) ### Rules for a base - **Letters, numbers and hyphens.** WordPress cleans the word when you save: `Películas` becomes `peliculas`, and `watch/movies` becomes `watch-movies`. A base is always a single word or words joined by hyphens. - **Different for each type.** Do not use the same word for two types. Do not use the slug of one of your pages either: if a page is called `movies` and so is the base of movies, the list of movies takes the address and the page can no longer be opened. - **Not `search` or `source`.** Dbmovies uses them for the search and for the links to watch or download. - **Never empty.** If a field is left empty, Dbmovies uses the default. ## Step 3: The permalink of each title Go to **Dbmovies › Settings › Data Importer › Titles / Content**. The **Permalink** template of each type writes the last part of the address when Dbmovies imports a title: | Type | Default template | Result | |---|---|---| | **Movies** | `{post_id}-{title}` | `1234-fight-club` | | **TV Shows** | `{post_id}-{title}` | `1235-ahsoka` | | **Episodes** | `{post_id}-{tvshow_title}-se-{season}-ep-{episode}` | `1236-ahsoka-se-1-ep-1` | The markers in braces are replaced with the data of each title. WordPress then writes the result in lowercase, turns spaces into hyphens, and removes accents and other characters. Some templates you can use: | Template | The movie *Fight Club* (1999) | |---|---| | `{post_id}-{title}` | `1234-fight-club` | | `{title}-{year}` | `fight-club-1999` | | `{title}-{imdb_id}` | `fight-club-tt0137523` | | `{original_title}-{year}` | The original title, whatever your import language. For *Amélie*: `le-fabuleux-destin-damelie-poulain-2001` | And for episodes: | Template | Ahsoka, season 1, episode 1 | |---|---| | `{post_id}-{tvshow_title}-se-{season}-ep-{episode}` | `1236-ahsoka-se-1-ep-1` | | `{tvshow_title}-{season}x{episode}` | `ahsoka-1x1` | - **Unique addresses.** `{post_id}` makes every address unique. Without it, two movies called *Halloween* end up as `halloween` and `halloween-2`. `{year}` or `{imdb_id}` also tell most titles apart. - **The language of the address.** `{title}` uses your import language, so a site in Spanish gets `el-club-de-la-pelea`. `{original_title}` keeps the original name. - **Titles already imported.** A new template applies to the titles you import from then on. Titles already on your site keep their address, unless an update rewrites it: see [Change an address on a published site](#change-an-address-on-a-published-site). The full list of markers is in [Titles and content](https://doothemes.com/docs/dbmovies/settings/titles-and-content#markers). ![Dbmovies › Settings › Data Importer › Titles / Content, with the three permalink templates](https://cdn.wupdater.com/dbmovies/docs/ad00107e39777724.webp) ### Collections and taxonomies Collections, genres, years, countries and persons are not written from a template. Their permalink is their **slug**, which WordPress makes from their name: the genre *Ciencia ficción* gets `ciencia-ficcion`. To change it, edit the **Slug** field in their editor or in **Quick Edit**. ## Step 4: Sign in and the member account The addresses of the member area follow the slugs of their pages: | Page | Default slug | Addresses | |---|---|---| | Authentication | `auth` | `/auth/login`, `/auth/signup` | | Account | `account` | `/account/`, `/account/plans` | To change them, edit the slug of the page in **Pages**, for example `auth` to `sign-in`. Every form and section moves with it: `/sign-in/login`. The last part, such as `login` or `plans`, is fixed. See [Required pages](https://doothemes.com/docs/dbmovies/settings/required-pages#changing-the-address). The search, `/search/inception`, and the links to watch or download, `/source/…`, have fixed addresses. ## Example setups ### A site in Spanish In **Settings › Permalinks**: | Field | Value | |---|---| | Type: Movies | `peliculas` | | Type: TVShows | `series` | | Type: Episodes | `episodios` | | Type: Collections | `colecciones` | | Taxonomy: Genres | `genero` | | Taxonomy: Releases | `estreno` | | Taxonomy: Countries | `pais` | | Taxonomy: Persons | `reparto` | | Tag base | `etiqueta` | With the default templates and Spanish as your import language, your addresses look like this: ```permalink https://your-website.com/peliculas/1234-el-club-de-la-pelea https://your-website.com/series/1235-ahsoka https://your-website.com/genero/ciencia-ficcion https://your-website.com/estreno/2024 https://your-website.com/pais/japon https://your-website.com/reparto/pedro-pascal ``` You can also rename the pages of the member area, for example `auth` to `acceso` and `account` to `mi-cuenta`. ### Short addresses In **Settings › Permalinks**, use `movie`, `tv` and `episode` as the bases of movies, TV shows and episodes. In **Titles / Content**, use `{title}-{year}` for movies and TV shows, and `{tvshow_title}-{season}x{episode}` for episodes: ```permalink https://your-website.com/movie/fight-club-1999 https://your-website.com/tv/ahsoka-2023 https://your-website.com/episode/ahsoka-1x1 ``` Without `{post_id}`, two titles with the same name and year still share an address, and WordPress adds `-2` to the second one. ### A site with a blog If your blog uses `/blog/%postname%/`, Dbmovies addresses get `/blog/` too, such as `/blog/movies/1234-fight-club/`. To keep your blog at `/blog/` and your catalog at the root of your site, ask your developer to use the filter in [For developers](#for-developers). ## Check your addresses 1. Click **Save Changes** in **Settings › Permalinks**, even if you did not change anything there. 2. Open a movie, a TV show, a genre and the search, and look at their addresses. 3. If one shows a 404 page: - check that no page uses the same slug as a base; - check that the permalink structure is not **Plain**; - click **Save Changes** again. ## Change an address on a published site This is what happens to the old addresses when you change a part on a published site: | What you change | The old addresses | |---|---| | The permalink of a movie, TV show, episode or collection | WordPress takes visitors to the new address | | The base of movies or TV shows | WordPress usually finds the title and takes visitors to it. It is a guess, so add a redirect anyway | | The base of episodes, collections or a taxonomy | They show a 404 page. Add a redirect | | The slug of a genre, year, country or person | It shows a 404 page. Add a redirect | | The permalink template | Nothing, until an update rewrites the address of a title | The permalink of a title also changes with every update of the Metaupdater if **Update Custom Permalinks** is checked. On a published site, uncheck it: see [Metaupdater](https://doothemes.com/docs/dbmovies/tools/metaupdater#title-slug-and-content). ### Add a redirect A permanent redirect (301) takes visitors and search engines from the old address to the new one. For example, to move the genre pages from `genre` to `genero`: - **With the free Redirection plugin:** add a redirect with the source `^/genre/(.*)` and the target `/genero/$1`, and turn on **Regex**. - **On Apache,** in `.htaccess`, before the WordPress rules: ```apache RedirectMatch 301 ^/genre/(.*)$ /genero/$1 ``` - **On Nginx,** in the `server` block: ```nginx rewrite ^/genre/(.*)$ /genero/$1 permanent; ``` Then submit your sitemap again in Google Search Console. ## Search engines - **Your sitemap** is at `/wp-sitemap.xml`. It lists your movies, TV shows, collections, and the pages of genres, years, countries and persons. Episodes are not listed since Dbmovies 1.3.37, because their address opens the TV show. If an SEO plugin makes your sitemap, exclude episodes there too. - **Choose your words once.** Addresses in the language of your visitors help them and search engines. Choose them before you open your site, and keep them. ## For developers To go further than these settings, use the `register_post_type_args` and `register_taxonomy_args` filters of WordPress. For example, to keep the movie addresses at `/movies/…` when your permalink structure starts with `/blog/`: ```php add_filter('register_post_type_args', function ($args, $post_type) { if ($post_type === 'dbmvs-movies') { $args['rewrite']['with_front'] = false; } return $args; }, 10, 2); ``` The content types are `dbmvs-movies`, `dbmvs-tvshows`, `dbmvs-episodes` and `dbmvs-collections`. The taxonomies are `dbmvs-genres`, `dbmvs-releases`, `dbmvs-countries` and `dbmvs-persons`. After you add a filter like this, go to **Settings › Permalinks** and click **Save Changes**. # Featured content > Featured content highlights movies and TV shows for 30 days, for example in the hero of your home page. This page explains how to feature a title, how long it lasts, and where it appears. Source: https://doothemes.com/docs/dbmovies/modules/featured-content --- ## Overview Feature a movie or a TV show to highlight it on your site, for example in the hero at the top of your home page. In [Wovie](https://doothemes.com/items/wovie), the featured titles rotate in the home hero, the most recent first. A title stays featured for **30 days** from the moment you feature it. Then it stops being featured on its own, so your hero always shows recent picks without manual cleanup. ## Featuring a title There are two ways, and both work the same: - **From the list.** In the **Movies** or **TV Shows** list, click **Add** in the **Featured Content** column. **Remove** takes it out. - **From the editor.** In the **Advanced** box of the title, turn on **Featured Content** and save. Turn it off and save to take it out. The two stay in sync: a title featured from the list shows the switch on in its editor, and the other way around. ![The Movies list with the Featured Content column, showing Add on some titles and Remove on a featured one](https://cdn.wupdater.com/dbmovies/docs/4773ed5e91316d58.webp) ![The Advanced box of a movie, with the Featured Content switch on](https://cdn.wupdater.com/dbmovies/docs/a57d7a86e3c8b9ad.webp) ## How long it lasts - A title is featured for 30 days from the moment you feature it. - Saving the title while it is featured does not restart the 30 days. - To feature it again after it expires, click **Add** or turn the switch on again. - When the 30 days end, a daily task removes the title from the featured content and turns its switch off. You can see the task, **Featured Content Expire**, in **Dbmovies › Tools › Cron Jobs**. Developers can change the duration with the `dbmovies_featured_duration` filter, in seconds. ## Where featured titles appear Your theme decides where to show them. Wovie shows up to five featured movies and TV shows in the hero of the home page, the most recently featured first. If no title is featured, the hero is not shown. ## Featured genres Genres have their own **Featured** option, which is separate from this one: it marks your main genres so your theme can show them first. See [Genres](https://doothemes.com/docs/dbmovies/taxonomies/genres). # Firewall > The Firewall protects the sign-in, sign-up, password reset and contact forms: it blocks IP addresses and ranges, and checks email addresses to reject disposable ones. This page explains each setting and the limits that are always on. Source: https://doothemes.com/docs/dbmovies/settings/firewall --- ## Overview The **Firewall** protects the public forms of Dbmovies: - Sign in, also with Google. - Sign up. - Password reset. - The contact form. It has two parts: an **IP address blacklist**, and an **email verification** that checks addresses with the Doothemes verification service. You set both in **Dbmovies › Settings › Firewall**. On top of these settings, the same forms limit repeated attempts on their own: see [Built-in limits](#built-in-limits). The firewall covers these forms, not the rest of your site. A blocked address can still browse your pages, and the WordPress login page (`wp-login.php`) is not covered. For site-wide protection, add a security plugin of your choice. ## IP Address Blacklist Addresses on the list cannot sign in, sign up, reset a password or send a message from the contact form. Instead, they see this message: *Your location is not allowed, please cease and desist from any action.* Write the list in **IP Address Blacklist**: - One address or range per line, IPv4 or IPv6. - A range uses CIDR notation: `203.0.113.0/24` blocks every address from `203.0.113.0` to `203.0.113.255`. - Lines that are not a valid address are ignored. ```text 203.0.113.7 203.0.113.0/24 2001:db8::/32 ``` The format of earlier versions, `[203.0.113.7][198.51.100.9]`, still works. Before Dbmovies 1.3.37, it was the only format that worked: if your list has one address per line, update Dbmovies. ![Dbmovies › Settings › Firewall, with the IP Address Blacklist and a few addresses and ranges](https://cdn.wupdater.com/dbmovies/docs/3ce717a7f3fd1b67.webp) ### Find the address to block Each message in **Dbmovies › Contact** shows the IP address of its sender. For the other forms, look in the access logs of your server or in your security plugin. The blacklist never blocks the WordPress admin, so you cannot lock yourself out with it. ### Behind Cloudflare, a proxy or a load balancer Dbmovies reads the real address of each visitor, and it does not trust headers that a visitor could fake: - **Cloudflare**: detected on its own. - **A proxy on your own server or private network**, such as Nginx in front of Apache: detected on its own. - **A load balancer or a CDN with a public address**: add its ranges with the `dbmovies_trusted_proxies` filter, or set your server to restore the real address (`mod_remoteip` in Apache, `real_ip` in Nginx). ```php add_filter('dbmovies_trusted_proxies', function ($ranges) { $ranges[] = '198.51.100.0/24'; // Your load balancer. return $ranges; }); ``` If Dbmovies sees the address of your proxy instead of your visitors, all of them share one address: blocking it blocks everyone, and the limits per address fill up for all of them. The Contact inbox is a quick check: if every message shows the same IP address, that is the case. ## Email verification With **Verify email addresses** on, Dbmovies checks an email address with the Doothemes verification service before accepting it: - **Check on sign up**: when a visitor creates an account, also with Google. On by default. - **Check on email change**: when a member changes the email of their account. On by default. Then choose what to reject: | Setting | What it rejects | Default | |---|---|---| | **Reject disposable addresses** | Throwaway inboxes, from services that give out temporary addresses | On | | **Reject domains that cannot receive email** | Domains with no mail server | Off | Leave the second one off unless you see abuse: a temporary DNS problem would turn away a legitimate visitor. Other results of the service, such as a domain that accepts any address, never reject an address. Visitors whose address is rejected see why, and can use a different one: - *Disposable email addresses are not allowed. Please use a permanent address.* - *That email domain cannot receive messages. Please check the address.* ![Dbmovies › Settings › Firewall, with Email verification turned on and its four options](https://cdn.wupdater.com/dbmovies/docs/298bf382333e2d83.webp) ### An aid, not the final word What proves that an address exists is the verification code that Dbmovies sends to it. The check only stops bad addresses earlier. That is why Dbmovies accepts the address when the service cannot be reached, when it takes longer than 8 seconds to answer, or when your license has no requests left. ### Requests and your license Email verification needs an active license. Each check uses one request of your daily limit, the same limit as IMDb data: see [License activation](https://doothemes.com/docs/dbmovies/license-activation). If you have more than one active license on your site, for example a Dbmovies license and a Wovie license, the check continues with the next one when the first runs out. On an email change, the check runs only after the member enters the right password, so failed attempts do not use requests. ## Built-in limits These limits are always on, and they have no setting: | What | Limit | |---|---| | Attempts for one account, by email or username | 5 every 15 minutes, in each of sign in, sign up and password reset | | Verification codes sent to visitors from one IP address | 5 every 15 minutes | | Failed Google sign-ins and new Google accounts from one IP address | 10 every 15 minutes | | Contact messages | 3 every 10 minutes from one IP address, and 5 a day from one email address | A visitor who reaches a limit sees a message that asks them to try again later, and can do it when the time has passed. The limits per account stop attacks against one account from many addresses. The limits per address stay high enough for a whole office or a mobile network, where many people share one address. ## More protection - **Cloudflare Turnstile** stops bots on the same four forms, usually without a puzzle. Set it up in **Dbmovies › Settings › Integrations**. - **The contact form** also blocks most automated spam on its own, with no setting. - **A security plugin** protects the rest of your site, including `wp-login.php`. ## Check your firewall 1. **Blacklist**: add your own IP address to the list and save. In a private window, try to sign in on your site: you see the blocked message. Then remove your address from the list. 2. **Email verification**: in a private window, sign up with an address from a temporary email service. The form rejects it. This check uses one request of your daily limit. If you use a page cache, it does not affect the firewall: the forms check every request on the server. # Genres > Genres classify your movies and TV shows, such as Action, Drama or Comedy. This page explains how genres are imported, how to feature a genre and give it an icon, and how to set their address. Source: https://doothemes.com/docs/dbmovies/taxonomies/genres --- ## Overview Genres classify your movies and TV shows: Action, Drama, Comedy, Science Fiction and so on. Movies and TV shows share the same genres, so a genre page lists both. You find **Genres** in the **Movies** and **TV Shows** menus. ## How genres are imported When you import a title, Dbmovies adds its genres from TMDb, if **Genres** is checked in **Dbmovies › Settings › Data Importer › Initial settings › Taxonomies**. - **Language:** genre names come in the language of your site. - **Movies and TV shows share the list.** TMDb uses some combined genres for TV shows, and Dbmovies splits them so that both share one list: - **Action & Adventure** becomes **Action** and **Adventure**; - **Sci-Fi & Fantasy** becomes **Science Fiction** and **Fantasy**; - **War & Politics** becomes **War**. - **Reused:** a genre that already exists on your site is reused, never duplicated. ## Editing a genre Open a genre to change its name, slug and description, like any WordPress category. Genres can also have parent genres, so you can create subgenres by hand. Dbmovies adds two fields: - **Featured**: highlights the genre. Your theme can use it to show your main genres first. We recommend featuring your most popular ones. - **Icon class**: a CSS class for the icon of the genre, if your theme shows icons. ![Editing a genre, with the Featured and Icon class fields](https://cdn.wupdater.com/dbmovies/docs/637a44332b922f25.webp) ## Permalink Every genre has its own page. You choose the word before its name in **Settings › Permalinks**, section **Dbmovies: Taxonomies**, field **Taxonomy: Genres**. The default is `genre`: ```permalink https://your-website.com/genre/science-fiction/ ``` Changing the word changes the address of every genre page. Choose it before you open your site. # Import images > Import images decides where the posters, backdrops, logos and photos of your site come from and in which size: TMDb directly, your own CDN, or copies on your server. This page explains each option, how to connect your CDN and how to choose the sizes. Source: https://doothemes.com/docs/dbmovies/settings/import-images --- ## Overview Your titles show many images: posters, backdrops, logos, episode images and photos of the cast. **Dbmovies › Settings › Data Importer › Import Images** decides where they come from and in which size. Dbmovies does not need to store these images on your server. By default it shows them straight from TMDb, which keeps your server light and your media library small. ## Where each image comes from For each image, Dbmovies uses the first option that applies: 1. **The featured image of the title**, if it has one: one an editor set, for example a localized poster, or a copy the importer uploaded. See [Upload to your server](#upload-to-your-server-not-recommended). 2. **Your CDN server**, if you set one. 3. **TMDb**, directly, if you leave the default. ## Serve images from a CDN **CDN server** is the address images are loaded from. The default, `https://image.tmdb.org`, loads them straight from TMDb. A CDN of your own keeps a copy of each image close to your visitors, so they load faster and do not depend on TMDb. You can use: - **CDN-TMDb**, our open source image server, which you can run on your own server. See [Deploy CDN Server](https://doothemes.com/docs/dbmovies/guides/deploy-cdn-server). - **Any CDN pull zone** whose origin is `https://image.tmdb.org`, such as Bunny CDN or KeyCDN. When you save a new address, Dbmovies loads a test image through it. If the CDN does not return the image, the address is not saved and the previous one stays, with a message that explains why. **Restore default** sets TMDb again. ![Dbmovies › Settings › Data Importer › Import Images, with CDN server, CDN access token and the CDN management buttons](https://cdn.wupdater.com/dbmovies/docs/262d1ace541ebdbb.webp) ### Manage a CDN-TMDb server With a CDN-TMDb server, add its **CDN access token** (the `API_SECRET` of your server) to use the management buttons. The token stays on your server: it is never sent to your visitors. | Button | What it does | |---|---| | **Test connection** | Checks the server and shows its statistics. It does not change anything | | **Clear cache** | Deletes the stored images, so the CDN downloads them again from TMDb when they are needed. It keeps the **archival** images: the ones TMDb no longer has | | **Delete all** | Deletes every stored image, archival ones included. Archival images cannot be recovered, because TMDb no longer has them | **Clear cache** and **Delete all** ask for confirmation. The buttons use the values of the form, so you can test a server before you save. ## Image sizes Each type of image is requested in one size. Larger sizes look sharper on big screens but take longer to load. | Setting | Where it is shown in Wovie | Options | Default | |---|---|---|---| | **Large poster** | The poster of the title page | 342, 500, 780 px or Original | 780 px | | **Medium poster** | Posters in lists and grids | 185, 300 or 342 px | 342 px | | **Backdrop** | The background of title pages, collections and the featured hero | 780, 1280 px or Original | 1280 px | | **Logo** | The logo of the title, over the backdrop | 185, 300, 500 px or Original | 300 px | | **Person photo** | Photos of the cast and crew | 185, 342 or 500 px | 185 px | **Original** is the full image as it was uploaded to TMDb, which can weigh several megabytes. Use it only if you need it. ## Upload to your server (not recommended) The importer can also download the main image of each title to your media library, as its featured image. **We do not recommend it**: - the images are served from your server instead of a CDN, which adds load and bandwidth; - your media library and your backups grow with every title; - a featured image takes priority over the CDN, so your CDN no longer serves those images. Use it only if you need the images on your server, for example to edit them. The settings are: | Setting | What it does | |---|---| | **Upload featured images** | **Movie and TV show poster**, **Episode image**, or both. None by default | | **WebP converter** | Converts the uploaded images to WebP, which weighs less. On by default | | **WebP quality** | From 30 to 100%. 80% by default: a good balance between quality and weight | | **Uploaded poster size** | 500, 780 px or Original. 780 px by default | | **Uploaded episode image size** | 780, 1280 px or Original. 780 px by default | A title only gets an uploaded image if it has no featured image yet, and updating a title never replaces its featured image. If you turn this on when you already have titles, each one gets its image the next time it is updated. :::note To stop serving an uploaded image, remove the featured image of the title: it goes back to your CDN or to TMDb. ::: ![The Upload to your server section, with Upload featured images, WebP converter, WebP quality and the uploaded sizes](https://cdn.wupdater.com/dbmovies/docs/518e194fb8c7fcaf.webp) # Import limits > Import limits sets how much of each title's data is imported from TMDb: tags, cast, directors, creators, backdrops and logos. This page explains what each limit changes on your site and how it affects import speed. Source: https://doothemes.com/docs/dbmovies/settings/import-limits --- ## Overview TMDb has a lot of data for each title: dozens of keywords, the full cast, every backdrop and logo uploaded by its community. **Dbmovies › Settings › Data Importer › Import Limits** sets how much of it each title gets. Higher limits give richer pages, but imports take longer and your database grows faster. The defaults are a good balance for most sites. ![Dbmovies › Settings › Data Importer › Import Limits, with the taxonomy and image limits](https://cdn.wupdater.com/dbmovies/docs/a8e22ee5f94fa372.webp) ## Limit taxonomies | Setting | What it limits | Range | Default | |---|---|---|---| | **Tag Taxonomy** | Tags of each title, taken from the TMDb keywords | 1 to 20 | 5 | | **Casting Taxonomy** | Actors of each movie and TV show, in the order of the credits | 1 to 20 | 5 | | **Directors Taxonomy** | Directors of each movie | 1 to 10 | 1 | | **Creators Taxonomy** | Creators of each TV show | 1 to 10 | 1 | Actors, directors and creators are saved as **persons**, each with their own page, photo and biography. - **Each new person takes time.** The first time a person is imported, Dbmovies reads their profile from TMDb. A higher cast limit means slower imports, especially at the start, when most persons are new. - **Persons build your person pages.** The more actors you import, the more complete the filmographies on your site, and the more recurring cast your collections can show. These limits only apply if the taxonomy is checked in **Taxonomies**, in [Data importer](https://doothemes.com/docs/dbmovies/settings/data-importer#taxonomies). ## Limit images These images are not uploaded to your server: Dbmovies saves their addresses, and they are loaded from your CDN or from TMDb. See [Import images](https://doothemes.com/docs/dbmovies/settings/import-images). | Setting | What it limits | Range | Default | |---|---|---|---| | **Backdrops** | Backdrops saved with each title | 1 to 20 | 5 | | **Logos** | Logos saved with each title | 1 to 20 | 5 | - **Backdrops**: in Wovie, the background of a title page changes among its backdrops every few seconds, and visitors can shuffle them. - **Logos**: the title page shows only the main logo. The others are kept in the **Images** tab of the **Metadata** box, as **More Logos**, in case you want to use one of them as **Main Logo**. If you set your own main logo, updates keep it. ## Changing a limit A new limit applies to the titles you import from then on. Titles you already have change when they are updated: - **Cast, directors and creators** follow the new limit: raising it adds persons, lowering it removes the extra ones. A person that no title uses anymore is deleted. - **Tags** only grow: updates add new tags, but never remove the ones a title has. - **Backdrops and logos** are replaced with the new number. To apply a new limit to your whole catalog, run the [Meta Updater](https://doothemes.com/docs/dbmovies/tools/metaupdater). # Import links > A practical guide to importing thousands of links from a spreadsheet: how to build the file, every value each column accepts, ready-to-copy examples, what each message of the review means and how to fix it, and the best order for a large catalog. Source: https://doothemes.com/docs/dbmovies/guides/import-links --- ## Overview **Import links** adds thousands of links at once from a spreadsheet. You open it in **Dbmovies › Links**, with the arrow next to **Add link**. The four steps of the panel are explained in [Link sources](https://doothemes.com/docs/dbmovies/modules/link-sources#importing-links-from-a-spreadsheet). This guide goes deeper: - how to build a file that imports at the first try; - every value each column accepts; - examples you can copy; - what each message of the review means and how to fix it. ## Before you start - **The titles must be on your site and published.** The import adds links to titles you already have; it does not create titles. Import them first with the [importer](https://doothemes.com/docs/dbmovies/modules/importers). - **For TV shows, the episodes must exist too.** Import them with [Automatic episodes](https://doothemes.com/docs/dbmovies/settings/automatic-episodes) or from the seasons manager. - **Each URL is added once.** If a URL is already on your site, its row is skipped. ## The file | | | |---|---| | **Format** | `.xlsx` or `.csv` | | **Size** | Up to 5,000 rows and 10 MB. Split larger files | | **Sheet** | Only the first sheet is read | | **Column names** | In the first row. Upper or lower case and spaces do not matter: `TMDb ID` is `tmdb_id`. You can also write `tmdb`, `imdb`, `lang` or `link` | | **Other columns** | Ignored. You can keep columns for your own notes | | **Empty rows** | Ignored | Click **Download template** in the panel to start from a file with the right columns. Its **Help** sheet lists examples and every accepted value. Keep the **Links** sheet first: it is the one that is read. **Hyperlinks:** if a cell of `url` shows a text such as *Watch here*, with the link behind it, the link is what counts. **CSV files:** - **Separator:** commas, semicolons and tabs are recognized on their own. Excel in Spanish saves CSV files with semicolons, and they work. - **Encoding:** save the file as **UTF-8**. In Excel, choose **CSV UTF-8** when you save. In another encoding, accents break, and a language written by name, such as *Español MX*, is not recognized. Codes such as `es-MX` always work. The file is read in your browser and never uploaded to your server. Only its rows are sent, in batches, to be checked and saved. ## The columns | Column | Required | Accepted values | |---|---|---| | `tmdb_id` | One of the two | A number, such as `550` | | `imdb_id` | One of the two | `tt` and numbers, such as `tt0137523`. Upper or lower case | | `season` | Episodes only | A whole number, such as `1` | | `episode` | Episodes only | A whole number, such as `5` | | `url` | Yes | A full address, starting with `https://` or `http://` | | `type` | Yes | `Embed`, `Embed link` or `iframe`. `Download`. `MP4` or `MP4 link`. Also `1`, `2` or `3` | | `language` | No | A code, such as `es-MX` (`es_MX` also works), or its name as the panel shows it, such as `Spanish MX`. Empty: no language | | `quality` | No | See the table below. Empty: no quality | | `status` | No | `Published`, `Pending`, `Processing`, `Refused` (also `Rejected`) or `Revoked`. Also `1` to `5`. Empty: Published | | `premium` | No | Yes: `yes`, `y`, `1`, `true`, `si`, `sí`, `x` or `premium`. No: `no`, `n`, `0`, `false` or empty | | `filesize` | No | Downloads only: free text, such as `1.5 GB` | | `password` | No | Downloads only | **Upper or lower case does not matter** in any value. Types and statuses can also be written as the panel shows them in the language of your admin. ### IDs - **A row without `season` and `episode` is a movie**, and its ID is the ID of the movie. - **A row with both is an episode**, and its ID is the ID of the **TV show**, not of the episode. - **You can write both IDs,** TMDb and IMDb, but they must point to the same title. - **On TMDb, movies and TV shows are numbered separately:** the same number can be a movie and a different TV show. That is why the season and the episode decide which one is searched. ### Quality | Write | It becomes | |---|---| | `8K`, `4320`, `4320p` or `8K 4320p` | 8K 4320p | | `4K`, `2160`, `2160p` or `4K 2160p` | 4K 2160p | | `2K`, `1440` or `1440p` | 2K 1440p | | `1080` or `1080p` | HD 1080p | | `720` or `720p` | HD 720p | | `480` or `480p` | SD 480p | | `360` or `360p` | SD 360p | | `240` or `240p` | SD 240p | ### File size and password They only apply to **Download** links: in other types they are ignored. If you leave the size empty, Dbmovies fills it in when you analyze the health of the link, if the host reports it. ## Examples ### A movie with several links | tmdb_id | url | type | language | quality | |---|---|---|---|---| | 550 | https://player.example.com/e/abc123 | Embed | en-US | 1080p | | 550 | https://player.example.com/e/def456 | Embed | es-MX | 720p | | 550 | https://files.example.com/f/ghi789 | Download | en-US | 1080p | One row for each link. They all go to the movie with TMDb ID 550. ### A whole season | tmdb_id | season | episode | url | type | language | |---|---|---|---|---|---| | 1399 | 1 | 1 | https://player.example.com/e/s1e1 | Embed | en-US | | 1399 | 1 | 2 | https://player.example.com/e/s1e2 | Embed | en-US | | 1399 | 1 | 3 | https://player.example.com/e/s1e3 | Embed | en-US | `1399` is the TMDb ID of the TV show. Each row goes to its episode. ### A download with size and password | imdb_id | url | type | quality | filesize | password | |---|---|---|---|---|---| | tt0137523 | https://files.example.com/f/fightclub | Download | 1080p | 2.1 GB | movies2026 | ### Links for members only | tmdb_id | url | type | quality | premium | |---|---|---|---|---| | 550 | https://player.example.com/e/4k-abc | Embed | 4K | yes | Only members with an active subscription can open it. See [Subscriptions](https://doothemes.com/docs/dbmovies/modules/subscriptions). ### Links to review before they go live | tmdb_id | url | type | status | |---|---|---|---| | 550 | https://player.example.com/e/new123 | Embed | Pending | Pending links are not visible. Review them in **Dbmovies › Links** and publish them when they are ready. ## The review, row by row When you drop the file, nothing is saved yet. Each row gets a state: | State | Message | What to do | |---|---|---| | **Ready** | | Nothing: it will be imported | | **Already exists** | *Already linked to this title.* | Nothing: the link is already there | | **Already exists** | *Already linked to "Title".* | That URL belongs to another title. The import does not move it: if it is in the wrong title, edit the existing link | | **Repeated** | *Same URL as row 12.* | The file has that URL twice. Only the first one counts | | **Not found** | *No movie with TMDb ID 550.* | Import the movie first, or check that the ID is of a movie and not of a TV show | | **Not found** | *No TV show with TMDb ID 1399.* | Import the TV show first, or check that the ID is of the TV show | | **Not found** | *Title has no season 2 episode 5.* | The TV show is on your site, but that episode is not. Import it with Automatic episodes or the seasons manager | | **Not published** | *"Title" is not published.* | Publish the title, then upload the file again | | **Error** | *The URL is missing.* or *The URL is not valid.* | Write the full address, with `https://` | | **Error** | *The type is missing.* or *Unknown type "…".* | Use Embed, Download or MP4 | | **Error** | *Add the TMDb or IMDb ID of the title.* | Fill in `tmdb_id` or `imdb_id` | | **Error** | *The TMDb ID must be a number.* or *The IMDb ID must look like tt1234567.* | Fix the ID | | **Error** | *The TMDb and IMDb IDs point to different titles.* | One of the two IDs is wrong. Keep the right one | | **Error** | *Season and episode go together: fill in both or neither.* or *Season and episode must be whole numbers.* | Fill in both, with numbers, or leave both empty for a movie | | **Error** | *Unknown status, language or quality "…".* | Use one of the values of [The columns](#the-columns) | | **Error** | *Premium must be yes or no.* | Use yes or no | The preview shows up to 500 rows for each state. To fix the rest: 1. Click **Rows with problems**. It downloads every row that will not be imported, with the reason in an extra column. 2. Fix them in your spreadsheet. 3. Upload that file again. ![The review of an import, with the state chips and rows with each state](https://cdn.wupdater.com/dbmovies/docs/1370cf46679efd68.webp) ## A large catalog Follow this order: 1. **Import your titles** with the importer. 2. **Import the episodes** of your TV shows with Automatic episodes. 3. **Import the links,** in files of up to 5,000 rows. While the import runs, keep the panel open. **Stop** pauses it at the end of the current batch. 4. **Fix the leftovers** with **Rows with problems** and upload them again. 5. **Analyze their health** at the end. Uploading the same file twice is safe: the links you already imported are skipped. If an import stops halfway, upload the same file again. ## After the import - **Health:** imported links come in as **Not checked**. The last step of the panel offers **Analyze health**, which checks only the links you just imported, three at a time. See [Link health](https://doothemes.com/docs/dbmovies/modules/link-sources#link-health). - **Rows not imported:** downloads the rows that were not saved, with their reason. - **Your other sites:** if you use [Sync List](https://doothemes.com/docs/dbmovies/settings/sync-list) to send links, every imported link is also sent to the sites of your network that accept it. A big import means many sends: they go out in the background, in batches. ## Common mistakes | Problem | Cause and fix | |---|---| | All the episodes say *Not found* | The file has the TMDb ID of each episode. Use the ID of the TV show in every row | | A movie says *No movie with TMDb ID…* but you have it | The ID is of a TV show with the same number. On TMDb, movies and TV shows are numbered separately | | Languages written by name are not recognized | The CSV is not in UTF-8. Save it as CSV UTF-8, or use codes such as `es-MX` | | *Missing columns: url.* (or another one) | The first row of the first sheet must have the column names. Check that the **Links** sheet is first | | The file has more than 5,000 rows | Split it in several files and import them one after the other | | A link went to the wrong title | Edit or delete it in **Dbmovies › Links**, fix the row, and import it again | # Importers > The importer brings movies and TV shows from TMDb into your site, one by one or in bulk. This page explains the importer screen, what each import brings, Quick import, the importer tools and settings, and how to solve common problems. Source: https://doothemes.com/docs/dbmovies/modules/importers --- ## Overview The importer is where you find movies and TV shows on TMDb and bring them into your site. Each import creates a title that is ready to publish: synopsis, poster and backdrops, genres, cast and crew, trailer, and TMDb and IMDb ratings. You can import titles in three ways: - **From the importer**: search or browse TMDb, then import titles one by one or a whole page at once. - **With Quick import**: paste a TMDb or IMDb link or ID in the Movies or TV Shows list. - **From user requests**: approve the titles your visitors ask for. See [User requests](https://doothemes.com/docs/dbmovies/modules/user-requests). ## Before you start - **An active license.** The importers are locked without one. See [License activation](https://doothemes.com/docs/dbmovies/license-activation). - **Your TMDb API key**, in **Dbmovies › Settings › Data Importer › Initial settings**. See [Initial settings](https://doothemes.com/docs/dbmovies/initial-settings). - **The import language**, in the same section. Titles, synopses and genres come in that language. When your license is active, the dot next to **dbmovies** at the top of the importer is green. ## The importer screen Open the **Dbmovies** menu. The screen has two columns. **The left column** holds the tools: - **Movies** and **Shows**: what you are looking for. - **Requests today**: the requests your license used today, out of its daily limit. Click it to refresh it; Ctrl + click opens the license page. - **Search** and **Discover**: two ways to find titles. - **Process log**: a line for every import and every page of results. - **The gear**: the importer settings. **The right column** shows the results, with the number of results found and the pages loaded. At the top you also find **Meta updater** (and, in its arrow, the other tools), **Bulk import** and **Help**. ![The importer with the Movies tab, the left column (Requests today, Search, Discover, Process log) and a grid of results with some titles marked as imported](https://cdn.wupdater.com/dbmovies/screenshot/ee63809c60032675.webp) ## Finding titles ### Search Type the name of a movie or TV show, or part of it, and press **Search** or Enter. The button turns on once there are at least two characters. The **×** inside the box empties it. ### Discover Browse TMDb without a search term. It is the quickest way to fill a catalog from scratch. - **Year**: optional. Leave it empty to browse every year. - **Page**: the page of results to start from, 20 titles each. - **Order** and **genre**: sort by popularity, rating, release date or title, and narrow to one genre. Click **Discover**. As you scroll to the bottom, the next page loads on its own, up to the limit of the importer settings. Then **Load more** takes over. **Reset** puts the filters back to their defaults. ## Importing a title Hover over a poster and click **Import**. In a few seconds, the title is created on your site, its poster is marked as imported, and the process log shows it with a link and an **Edit** button. - Titles already in your library are marked as **Imported**. They are not imported twice. - Titles for adults show an **NSFW** badge. - A title that failed gets a red outline. Click its **Import** button to try again. ## What each import brings | Data | Where it comes from | Setting that controls it | |---|---|---| | Title, synopsis, release date, runtime, tagline | TMDb | **Language**, and **Titles and content** for the title and content templates | | Genres, release year, countries, tags | TMDb | **Taxonomies** and **Import Limits** (how many tags) | | Cast, directors and creators | TMDb | **Import Limits** (how many of each) | | Poster, backdrops and logos | TMDb | **Import Images** and **Import Limits** | | Trailer | TMDb (YouTube) | — | | TMDb rating and votes | TMDb | — | | IMDb rating, votes and age rating | IMDb data, through the Doothemes server | — | | Status and publish date | — | **Movies**, **TVShows**, **Episodes** and **Publish with release date**, in **Initial settings** | All these settings are in **Dbmovies › Settings › Data Importer**. See [Data importer](https://doothemes.com/docs/dbmovies/settings/data-importer), [Import images](https://doothemes.com/docs/dbmovies/settings/import-images), [Import limits](https://doothemes.com/docs/dbmovies/settings/import-limits) and [Titles and content](https://doothemes.com/docs/dbmovies/settings/titles-and-content). A few things to know: - **IMDb data uses one request** of your daily limit for each movie or TV show. Episodes do not use IMDb requests. If the IMDb data cannot be loaded, for example because you reached your daily limit, the title is imported anyway without its IMDb rating, and the [Meta Updater](https://doothemes.com/docs/dbmovies/tools/metaupdater) adds it later. - **Persons.** A person that already exists on your site is reused, so a person page gathers all their titles. A movie saves the people credited as Director as its directors. A TV show saves its creators and the main cast of all its seasons, ordered by the number of episodes. - **Images.** Depending on **Import Images**, they are uploaded to your media library or loaded from TMDb or your CDN. - **TV shows** bring the list of their seasons. Their episodes are created by **Automatic episodes**, if it is on, or from the seasons manager. See [TV Shows](https://doothemes.com/docs/dbmovies/post-types/tvshows#importing-the-episodes). ## Bulk import **Bulk import**, at the top of the results, imports every title on screen that is not in your library yet. **Ctrl + Q** does the same. 1. Load the results you want, with Search or Discover. 2. Click **Bulk import**. It tells you how many titles will be imported and asks you to confirm. 3. A bar under the results shows how many are done, how many were imported and how many failed, and the time left. - **What is imported:** only the titles on screen when you confirm. Pages that load afterwards need another bulk import. - **Parallel imports:** several titles are imported at the same time (four by default, up to seven). Each one keeps a PHP process of your server busy, so on a small server use one or two. - **Stop:** lets the imports that are running finish and does not start new ones. - **Automatic stop:** after several failures in a row (five by default), the run stops by itself. When the source stops answering, the rest would only fail one by one and spend requests. - **Failed titles:** they are not retried on their own. Click their **Import** button to try again. ![A bulk import in progress, with the progress bar under the results header](https://cdn.wupdater.com/dbmovies/docs/5442833133d1b601.webp) ## Quick import To import one title you already know, you do not need the importer: 1. Go to the **Movies** or **TV Shows** list. 2. Click **Quick import**, next to the add button at the top of the list. 3. Paste a TMDb or IMDb link or ID, for example `https://www.themoviedb.org/movie/550` or `tt0137523`, and click **Import**. Dbmovies imports the title and opens it in the editor. If it is already on your site, it tells you and offers to edit it. ![The Movies list with the Quick import field open and a TMDb link pasted](https://cdn.wupdater.com/dbmovies/docs/d5801a20a45f7cec.webp) ## Importer tools The arrow next to **Meta updater** lists the three tools of the importer. Each one opens in a side panel: - **Meta updater**: refreshes the data of the titles you already imported. See [Metaupdater](https://doothemes.com/docs/dbmovies/tools/metaupdater). - **Automatic episodes**: the queue that creates the episodes of your TV shows in the background. See [TV Shows](https://doothemes.com/docs/dbmovies/post-types/tvshows#automatic-episodes). - **Cleanup orphan persons**: deletes the persons that no title uses anymore. See [Cleanup orphaned persons](https://doothemes.com/docs/dbmovies/tools/cleanup-orphaned-persons). While a tool works, you can close its panel and keep using the importer. A dot on the button tells you it is still running. Each tool also has its own link: add `?tool=metaupdater`, `?tool=episoder` or `?tool=orphan-cleanup` to the address of the importer. ## Importer settings The gear at the top of the left column opens the settings of this screen. They are saved in your browser, so they change the importer for you and not for the other editors of your site. - **Loading results**: whether the next page loads as you scroll, and how many pages before it stops. - **Importing**: how many titles a bulk import requests at once, whether to confirm before it starts, after how many failures in a row it stops, and whether to notify you when a run finishes while the tab is in the background. - **Results**: hide the titles already in your library, and the poster size. - **Process log**: whether to show page loads, how many lines and for how many days to keep them, and what the time column shows. **Clear stored data** puts everything back to its defaults and also empties the log. ![The importer settings panel opened from the gear](https://cdn.wupdater.com/dbmovies/docs/0000fb0c3c2f59f1.webp) ## Process log Every import and every page of results leaves a line in the process log, newest first. Imported titles link to the title on your site and have an **Edit** button. The log is still there when you come back, and **Clear** empties it. ## Help **Help**, at the top of the results, opens a side panel with a summary of everything on this page. ## Common problems - **The importer does not find anything.** Check your TMDb API key in **Initial settings**. If your server cannot reach TMDb, turn on **TMDb API proxy server** in the same section. - **The importer is locked.** Activate your license in **Dbmovies › Updates**. - **Titles are imported without IMDb rating.** You probably reached your daily limit, or IMDb has no data for that title. The Meta Updater fills it in later. See [License activation](https://doothemes.com/docs/dbmovies/license-activation#the-daily-request-limit). - **A bulk import stops by itself.** It stopped after several failures in a row. Wait a few minutes and run it again: the titles already imported are skipped. - **Your server slows down during a bulk import.** Lower the number of parallel imports in the importer settings. # Initial settings > The first settings to review after activating your license: your TMDb API key, permalinks, required pages, email delivery and scheduled tasks. Everything else works with safe default values. Source: https://doothemes.com/docs/dbmovies/initial-settings --- ## Before you start Dbmovies works with safe default values from the moment you activate it, so you do not need to review every setting. This page covers the few settings that you do need before you start importing and opening your site to visitors. :::note Activate your license first. Without an active license, Dbmovies does not save changes to its settings. See [License activation](https://doothemes.com/docs/dbmovies/license-activation). ::: All Dbmovies settings are in **Dbmovies › Settings**. ## 1. Add your TMDb API key This is the setting the importers need. Without it, they cannot retrieve any content. 1. Go to **Dbmovies › Settings › Data Importer › Initial settings**. 2. Paste your key in **Themoviedb.org API Key**. If you do not have one yet, create a free account at [themoviedb.org](https://www.themoviedb.org) and request an API key in your account settings. 3. Review the other settings of this section: - **Language**: the language of the titles, synopses and genres you import, for example `en-US` or `es-MX`. - **Movies**, **TVShows** and **Episodes**: the status of imported content: **Publish** (the default), **Pending** or **Draft**. - **Publish with release date**: uses each title's release date as its publish date, for the content types you check (all of them by default). Decide it before you import, because it affects every title you import and update. 4. Click **Save**. ![Themoviedb API Key](https://cdn.wupdater.com/dbmovies/docs/a2e00ded3a9d94ff.webp) Dbmovies › Settings › Data Importer › Initial settings, with the TMDb API key, Language and the publishing options If your server cannot reach TMDb, turn on **TMDb API proxy server** in the same section. Dbmovies then reaches TMDb through the Doothemes server. To check that everything works, open the importer (the **Dbmovies** menu) and search for any title. See [Importers](https://doothemes.com/docs/dbmovies/modules/importers) and [Data importer](https://doothemes.com/docs/dbmovies/settings/data-importer) for the rest of the import settings. ## 2. Permalinks Dbmovies needs pretty permalinks to build the addresses of movies, TV shows, episodes and the rest of its content. ![Recommendation for permalink settings.](https://cdn.wupdater.com/dbmovies/docs/75913f4469f8aed3.webp) We recommend this setting: 1. Go to **Settings › Permalinks** in your WordPress admin. 2. Under **Permalink structure**, select **Custom Structure**. 3. Enter only `/%postname%`, **without a slash at the end**. 4. Click **Save Changes**. Any other pretty permalink structure also works, but this one gives you the cleanest addresses. On the same page, the **Optional** section has a field for each Dbmovies content type and taxonomy. Use them to change the base of their addresses, for example `movies` in `yoursite.com/movies/inception`. Change them before you publish your site: changing a base later changes the address of all its content. ![Settings › Permalinks, Optional section, with the Dbmovies fields for movies, TV shows, episodes and taxonomies](https://cdn.wupdater.com/dbmovies/docs/48d88f89d212f412.webp) ## 3. Required pages Your theme uses a few WordPress pages for search, sign-in and the user account. Create them as regular pages, then assign them in **Dbmovies › Settings › Main settings**: - **Browser page** - **Authentication page** - **Account page** - **Contact page** - **Terms of Use page** - **Privacy policies page** In the same section, check that **Site status** is set to **Active**. ![Required pages](https://cdn.wupdater.com/dbmovies/docs/65fef9450082e1d2.webp) Dbmovies › Settings › Main settings, with Site status and the required pages assigned See [Required pages](https://doothemes.com/docs/dbmovies/settings/required-pages) for what each page does. ## 4. Email delivery (SMTP) Dbmovies sends emails for sign-up codes, password resets, welcome messages and memberships. Sending them through SMTP is far more reliable than the default PHP mail function, which many hosts block or send to spam. ![SMTP server connection settings for sending system emails.](https://cdn.wupdater.com/dbmovies/docs/f1625eef588da8c1.webp) 1. Go to **Dbmovies › Settings › Email › Settings**. 2. Fill in **Outgoing email address** and **Incoming email address**. 3. Under **Advanced Settings**, set **Mail delivery method** to **SMTP**. 4. Complete the fields with the data of your email provider: **SMTP Server**, **SMTP Port**, **SMTP Protocol**, **From Name**, **From Email**, **Username** and **Password**. 5. Click **Save**. To check it, open your site in a private window and create a test account, or request a password reset for an existing account. If the email with the code arrives, your settings are correct. If it does not arrive, check the details with your email provider and make sure your host allows outgoing connections on that SMTP port. ## 5. Scheduled tasks Automatic episodes, the Meta Updater and the license checks run as scheduled tasks. WordPress runs scheduled tasks only when someone visits your site, so on a new site with few visits they fall behind. We recommend a server cron job that calls `wp-cron.php` every minute. Your host's control panel usually has a "Cron jobs" section for this. See [Cron Jobs](https://doothemes.com/docs/dbmovies/tools/cron-jobs). To check that they run on time, go to **Tools › Site Health**. ## Notices and Site Health Dbmovies shows a notice at the top of your admin in two cases: - **"This copy of Dbmovies is not linked to a license"**: activate your license in **Dbmovies › Updates**. - **A database error after an update**: the notice shows the error, and Dbmovies tries again on its own. If it continues, contact support with the message. **Tools › Site Health** also checks the connection to TMDb, whether scheduled tasks run on time, and your license and its daily requests. Review it after you finish this page. ![Tools › Site Health, Status tab, with the Dbmovies checks](https://cdn.wupdater.com/dbmovies/docs/085fec48dc323de1.webp) ## What to turn on next These features are optional, and you can turn them on whenever you are ready: - **Automatic episodes**: create the episodes of each TV show in the background. Go to **Settings › Data Importer › Automatic episodes**. - **Auto-Embed**: add embed links to every movie and episode from your provider's URL pattern. See [Auto-Embed support](https://doothemes.com/docs/dbmovies/settings/auto-embed-support). - **Memberships with PayPal**: charge for premium access. See [Subscriptions](https://doothemes.com/docs/dbmovies/modules/subscriptions). - **Firewall**: block IP addresses and reject disposable email addresses. See [Firewall](https://doothemes.com/docs/dbmovies/settings/firewall). ## Next step Your installation is ready. Continue with [Importers](https://doothemes.com/docs/dbmovies/modules/importers) to bring in your first titles, or with [Movies](https://doothemes.com/docs/dbmovies/post-types/movies) to learn how Dbmovies stores them. # Installation > How to install Dbmovies on your WordPress site: from the admin panel, by FTP or with WP-CLI. It also covers updates, what deactivating and deleting the plugin do, and how to add the Wovie theme. Source: https://doothemes.com/docs/dbmovies/installation --- ## Before you start - Check that your server meets the [Requirements](https://doothemes.com/docs/dbmovies/requirements). - Download the latest Dbmovies package from [Downloads](https://doothemes.com/account/downloads) in your Doothemes account. It is a ZIP file named `dbmovies.zip`. Do not unzip it if you install it from the WordPress admin. - Sign in to WordPress with an administrator account. ## Method 1: From the WordPress admin (recommended) 1. In your WordPress admin, go to **Plugins › Add New Plugin**. 2. Click **Upload Plugin** at the top of the page. 3. Click **Choose File**, select `dbmovies.zip` and click **Install Now**. 4. When the installation finishes, click **Activate Plugin**. ![Plugins › Add New Plugin › Upload Plugin, with dbmovies.zip selected and the Install Now button](https://cdn.wupdater.com/dbmovies/docs/95c002f237e0fe9b.webp) If the upload fails with a message such as "The uploaded file exceeds the upload_max_filesize directive", increase `upload_max_filesize` and `post_max_size` in your PHP settings, or use the FTP method below. ## Method 2: By FTP or SFTP 1. Unzip `dbmovies.zip` on your computer. You get a folder named `dbmovies`. 2. Connect to your server with an FTP or SFTP client. 3. Upload the `dbmovies` folder to `wp-content/plugins/`. 4. In your WordPress admin, go to **Plugins › Installed Plugins**, find Dbmovies and click **Activate**. > **Important:** the folder must be named `dbmovies`. With a different name, such as `dbmovies-1.3.35`, WordPress cannot match it with its updates. ## Method 3: With WP-CLI If you manage your site from the command line, install and activate the plugin in one step: ```bash wp plugin install /path/to/dbmovies.zip --activate ``` If the files are already in `wp-content/plugins/dbmovies`, only activate it: ```bash wp plugin activate dbmovies ``` ## What happens when you activate it - The **Dbmovies** menu appears in your admin sidebar, with the importer, Links, Payments, Subscriptions, Requests, Ads, Tools, Updates and Settings. - On its first load, Dbmovies creates its database tables. It takes a few seconds. If an action answers "The database is being updated. Try again in a moment.", wait a moment and try again. - The importers stay locked until you activate your license and add your TMDb API key. [SCREENSHOT_HERE: The WordPress admin sidebar with the Dbmovies menu open, right after activating the plugin] ## Installing the Wovie theme Wovie is the theme built for Dbmovies, and it needs the plugin to work. Install it after Dbmovies: 1. Download the Wovie package from [Downloads](https://doothemes.com/account/downloads). 2. Go to **Appearance › Themes › Add New Theme › Upload Theme**, select the file and click **Install Now**. 3. Click **Activate**. You manage the Wovie license from **Dbmovies › Updates**, next to the Dbmovies license. See the [Wovie documentation](https://doothemes.com/docs/wovie) for its settings. ## Updating With an active license, Dbmovies updates like any other plugin. When a new version is out, WordPress shows it in **Dashboard › Updates** and in the plugins list. Click **View details** to read what changed before you update. To update by hand, download the latest package from [Downloads](https://doothemes.com/account/downloads) and upload it again with Method 1. WordPress detects that Dbmovies is already installed and offers to replace the current version with the uploaded one. Your content and settings are stored in the database, so updates keep them. If a new version changes the database, Dbmovies updates it on its own on the next page load. ## Deactivating and deleting - **Deactivating** the plugin stops its scheduled tasks. Your settings, content and license are kept, and everything comes back when you activate it again. - **Deleting** the plugin from **Plugins › Installed Plugins** removes its files. By default it keeps its database tables and settings, so if you install it again, everything is where you left it. To delete the Dbmovies data too, go to **Dbmovies › Settings › Main settings**, turn on **Delete data when uninstalling** and save before deleting the plugin. Dbmovies then also deletes its database tables, settings and scheduled tasks. ![Dbmovies › Settings › Main settings, with the Delete data when uninstalling option](https://cdn.wupdater.com/dbmovies/docs/93b374f14da1f52f.webp) > **Note:** your movies, TV shows, episodes, persons, users, comments and images in the media library are never deleted, even with this option turned on. They are regular WordPress content. ## Next step Activate your license to unlock the importers and receive updates: continue with [License activation](https://doothemes.com/docs/dbmovies/license-activation). Then follow [Initial settings](https://doothemes.com/docs/dbmovies/initial-settings). # License activation > How to activate your Dbmovies license, what it unlocks, how the daily request limit works, and how to move, renew or remove a license. Source: https://doothemes.com/docs/dbmovies/license-activation --- ## What the license unlocks Your Dbmovies license is the only credential the plugin needs from Doothemes. While it is active, it gives you: - **The importers**: importing movies and TV shows, Quick import and title requests. - **The background tasks**: Automatic episodes and the Meta Updater. - **IMDb data** for your movies and TV shows, and the optional TMDb proxy. - **Plugin updates**, delivered to your WordPress admin for the time your plan includes. - **The plugin settings**: changes to the settings are saved only with an active license. If your license expires or is removed, your site keeps working and everything you imported stays published. The features above stop until you activate a license again. ## Where to find your license key You receive your license key by email after your purchase. You can also see all your licenses at any time in [Licenses](https://doothemes.com/account/licenses) in your Doothemes account. ## How to activate your license 1. In your WordPress admin, go to **Dbmovies › Updates**. You see one row for each Doothemes product on your site: Dbmovies and your Doothemes themes, such as Wovie. 2. Click the **Dbmovies** row, or **Activate** on that row. The License management panel opens. 3. Paste your key in **License key**. 4. Click **Activate**. ![Manage the Doothemes licenses that your website requires.](https://cdn.wupdater.com/dbmovies/docs/b5d206b89be0cc78.webp) When the activation works, the panel shows a confirmation and the row changes to **Active**, with your key partly hidden. Use the license of the right product. A Wovie license does not activate Dbmovies, and the panel tells you if the key belongs to a different product. ## What the panel shows With an active license, click its row to see: - **Usage**: the requests used today out of your daily limit. - **License period**: how much of your license period has passed and when it expires. - **Sites**: how many sites use this license out of the number your plan allows. - **Manage plan**: links to renew the license or move to a higher plan from your Doothemes account. ![SCREENSHOT_HERE: The License management panel of an active Dbmovies license, with Usage, License period, Sites and Manage plan](https://cdn.wupdater.com/dbmovies/docs/dce9f74e579d6d94.webp) ## The daily request limit Every license includes a number of requests per day to the Doothemes server. These count toward the limit: - IMDb data: one request for each movie or TV show you import or update. Episodes do not use IMDb requests. - The TMDb proxy, if you turn it on. - License checks. Requests to TMDb with your own API key do not count. The importer shows how many requests you used today, next to your limit. When you reach the limit, the features that use the Doothemes server stop making requests until the next day. Nothing breaks, and the data you already have stays in place. If you have more than one active license on your site, for example a Dbmovies license and a Wovie license, IMDb data continues with the next one. You can see the limit of each license type on the [Dbmovies page](https://doothemes.com/items/dbmovies), and move to a higher plan at any time from your account. ## Check your activation After you activate your license, check that: - The Dbmovies row shows **Active** in **Dbmovies › Updates**. - The importer finds titles when you search. - Plugin updates appear in **Dashboard › Updates** when a new version is out. Dbmovies checks your license with the server every hour, so a renewal or a change of plan shows up on its own. To check it right away, open the license panel and click **Check now**. You can change how often it checks in **Dbmovies › Tools › Cron jobs**. ## Move your license to another site Each license works on the number of sites its plan allows at the same time. Local sites (`localhost`, and domains ending in `.local`, `.test` or `.localhost`) do not use an activation. To use it on a different site or domain: 1. On the old site, open the license panel in **Dbmovies › Updates** and click **Deactivate**. This frees the site on the server. 2. Activate the license on the new site. If you move the site to a new domain without deactivating it first, the old domain keeps using one activation. If you can no longer reach the old site, [open a support ticket](https://doothemes.com/account/tickets/new) to free it. ## Deactivate or uninstall a license The license panel has two ways to remove a license from your site: - **Deactivate** frees this site on the Doothemes server, so you can use the license somewhere else. It needs the server to answer. - **Uninstall** removes the license from this site even if the server does not answer, or if the license is no longer valid. It also tries to free the site on the server. Use it when Deactivate fails, or to clean up an expired or disabled license. Both keep your settings and your content. You can activate a license again at any time. ## Activation problems The panel tells you why an activation failed: - **"The license key is invalid."** Check that you copied the whole key, without spaces before or after it. - **"This license reached its activation limit. Deactivate it on another site first."** The license is already active on as many sites as your plan allows. Deactivate it on a site you no longer use, or move to a higher plan. If you can no longer reach that site, open a support ticket to free it. - **"This license has expired."** Renew it from your Doothemes account. - **"This license has been disabled."** Contact support. - **"This license belongs to a different product."** Use the license of the product you are activating. - **"Could not reach the licensing server."** Your server could not connect to the Doothemes server. Check that it can make outgoing HTTPS connections to `edge.wupdater.com` (see [Requirements](https://doothemes.com/docs/dbmovies/requirements)), and that no firewall or security plugin blocks them. - **"The license could not be verified on this site. Please reactivate."** Uninstall the license and activate it again. If the problem continues, [open a support ticket](https://doothemes.com/account/tickets/new) with your license key and the exact message you see. ## Next step With your license active, configure the plugin and add your TMDb API key: continue with [Initial settings](https://doothemes.com/docs/dbmovies/initial-settings). # Link sources > Links are the video sources of your movies and episodes: streaming embeds, downloads and MP4 files. This page explains the Links screen, link types and statuses, premium links, link health, and the three ways to add links, including importing thousands from a spreadsheet. Source: https://doothemes.com/docs/dbmovies/modules/link-sources --- ## Overview A link is a video source of a movie or an episode: a streaming player, a download or a direct MP4 file. Your theme shows the published links of each title to your visitors. **Dbmovies › Links** is the central place for every link of your site. From there you search, filter, add, edit, verify and delete links without opening each title. There are three ways to add links: - **One by one**, from **Dbmovies › Links** or from the **Sources** box of each movie or episode. - **Many at once**, importing an Excel or CSV file with up to 5,000 rows. - **Automatically**, with [Auto-Embed](https://doothemes.com/docs/dbmovies/settings/auto-embed-support), which builds embed links for every title from your provider's URL pattern. ## The Links screen The list shows every link with: | Column | What it shows | |---|---| | **Server / Hash** | The host name (MEGA, YouTube…) and the unique hash of the link | | **Lang / Quality** | The language, with its flag, and the quality | | **Type** | Embed Link, Download or MP4 Link | | **Status** | Published, Pending, Processing, Refused or Revoked | | **Post** | The movie or episode it belongs to | | **Health** | A score from 0 to 100 that tells whether the link still works | | **Premium** | Whether only members can use it | | **Requests** | How many times visitors opened it | | **User** | Who added it | | **Created** | When it was added | Above the list, search by URL or title, and filter by status, type, post type (movies or episodes) and health. **Tools** opens the maintenance tools, and **Add link** the form for a new link. For security, the list only shows the server name, never the full URL. The real URL appears only in the edit panel, so you can share screenshots of this page without exposing your sources. ![Dbmovies › Links, with the filters, the Tools and Add link buttons, and several links with their health bars](https://cdn.wupdater.com/dbmovies/docs/1b1ba8a14a23be13.webp) ## Link types The type tells the player how to handle the link: - **Embed Link**: an external player loaded in a frame, from hosts like YouTube or other streaming services. - **Download**: a direct link to a file on a host like MEGA, 1fichier or MediaFire. Only downloads have **File size** and **Password**. - **MP4 Link**: a direct video file, played in the HTML5 player. ## Link statuses The status controls whether visitors see the link: - **Published**: live and visible. - **Pending**: waiting for your review, not visible. The **Links** badge in the admin toolbar counts them. - **Processing**: being worked on, for example while you replace the file. - **Refused**: rejected and kept for reference, not visible. - **Revoked**: disabled, for example because the host took it down. Not visible. To stop showing a link without deleting it, set it to **Refused** or **Revoked**. ## Premium links Turn on **Premium** to reserve a link for members with an active subscription. Visitors without one cannot open it. See [Subscriptions](https://doothemes.com/docs/dbmovies/modules/subscriptions). ## Link health The **Health** score (0 to 100) tells whether a link still works. Dbmovies checks it directly with the host. It supports MEGA, 1fichier, MediaFire, MegaUp and YouTube; links from other hosts stay at 0. | Score | Meaning | |---|---| | **Healthy** (80–100) | Confirmed available | | **Degraded** (50–79) | Uncertain: timeout, blocked or unclear answer | | **Broken** (1–49) | Confirmed deleted or removed | | **Not checked** (0) | Never checked, or a host that is not supported | The score updates every time you publish or edit a link. To check many links at once, use **Tools › Analyze link health**. See [Analyze link health](https://doothemes.com/docs/dbmovies/tools/analyze-link-health). Then use the **Health** filter to find the broken ones. ## Adding a link 1. Click **Add link**. 2. Search for the movie or episode the link belongs to. 3. Paste the URL. 4. Choose the **Type**, **Status**, **Language** and **Quality**. For downloads, you can also set the **File size** and a **Password**. If you leave the file size empty, Dbmovies fills it in from the host when it can. 5. Turn on **Premium** if only members can use it. 6. Save. Dbmovies remembers your last type, language and quality, which speeds up adding links in a row. A URL that is already registered is rejected. You can also add links from the **Sources** box of each title. See [Movies](https://doothemes.com/docs/dbmovies/post-types/movies#sources) and [Episodes](https://doothemes.com/docs/dbmovies/post-types/episodes#sources). ![The Add link panel, with a title selected, a URL, and the type, status, language and quality fields](https://cdn.wupdater.com/dbmovies/docs/6bf4627f855cd6b1.webp) ## Editing a link Click the row of a link, or **Edit**, to open its panel. There you see the real URL, its host, who added it and which title it belongs to, and you change any field. When you save, Dbmovies checks the link again, so its health and file size stay up to date. ![The edit panel of a link, with its URL, status, type, language, quality and health](https://cdn.wupdater.com/dbmovies/docs/418075af9336d4b1.webp) ## Importing links from a spreadsheet To add many links at once, open the arrow next to **Add link** and choose **Import links**. ### 1. Prepare the file - **Format:** an `.xlsx` or `.csv` file, up to **5,000 rows** and **10 MB**. Split larger files. - **Template:** click **Download template** to start from the right format. It has a **Links** sheet with the column names and a **Help** sheet with examples and every accepted value. - **What is read:** only the first sheet. Its first row must have the column names. Columns are matched by name; unknown columns are ignored. - **Privacy:** the file is read in your browser and never uploaded. Only its rows are sent to be checked. | Column | Required | What to write | |---|---|---| | `tmdb_id` | One of the two | TMDb ID of the movie, or of the **TV show** for an episode | | `imdb_id` | One of the two | IMDb ID (`tt1234567`) of the movie, or of the TV show for an episode | | `season` | Episodes only | Season number | | `episode` | Episodes only | Episode number | | `url` | Yes | The link | | `type` | Yes | `Embed`, `Download` or `MP4` | | `language` | No | Audio language code, like `es-MX` or `en-US` | | `quality` | No | Like `1080p`, `720p` or `4K` | | `status` | No | Empty means Published. Also Pending, Processing, Refused or Revoked | | `premium` | No | `yes` if only members can use it (also `1`, `sí` or `x`) | | `filesize` | No | Downloads only, like `1.5 GB` | | `password` | No | Downloads only | A row without `season` and `episode` is a movie. With both, it is an episode of the TV show with that ID. The panel lists every accepted type, status, quality and language; click a value to copy it. ![The Import links panel, step 1, with the drop zone, Download template and the guide of columns and values](https://cdn.wupdater.com/dbmovies/docs/52b3559782ca204e.webp) ### 2. Review the rows Drop the file in the panel. Nothing is saved yet: Dbmovies checks each row and shows a preview with the title it found, the link host, the type, language and quality, and its state: - **Ready**: it will be imported. - **Already exists**: that URL is already on your site. It is skipped. - **Repeated**: the file has that URL in an earlier row. Only the first one counts. - **Not found**: there is no title with that ID, or the TV show has no such episode. - **Not published**: the title exists but is not published. - **Error**: a value is not valid. The row tells you which one, for example an unknown quality. The title must already be imported and published: the import does not create titles. Filter the rows by state, and click **Rows with problems** to download them, fix them and upload them again. ![The preview of an import, with the state chips (ready, already exist, not found…) and the table of rows](https://cdn.wupdater.com/dbmovies/docs/0f2d3cca9d2e6d0c.webp) ### 3. Import Click **Import N links**. Ready rows are saved in batches, with a progress bar and a **Stop** button. Keep the panel open until it finishes. If it stops, upload the same file again: links already imported are skipped. ### 4. Check their health Imported links come in unchecked. The last step offers **Analyze health**, which checks only the links you just imported. **Rows not imported** downloads the rows that were not saved. ## Deleting links Deleting a link removes it for good: it disappears from your site and from the list, and it cannot be undone. Only administrators can delete links here. - **From the list:** click **Delete** on its row and confirm. Broken links (health 1–49) are deleted without asking, so you can clean them up quickly. - **From the edit panel:** click **Delete** at the bottom left, then click again within 4 seconds to confirm. Links are also deleted when: - their movie or episode is deleted permanently (moving it to the trash keeps them); - a TV show is deleted permanently, together with its episodes; - the user who added them is deleted; - a weekly task finds links whose movie or episode no longer exists. ## How links reach your visitors Your theme never shows the real URL of a link. Each link has a unique hash, and the player opens it through `/sources/go/{hash}`. That route checks the subscription of the visitor for premium links before opening the source, and counts each opening in the **Requests** column. ## Tools **Tools**, at the top of the Links screen, opens: - **Analyze link health**: checks every link with its host and scores its health. See [Analyze link health](https://doothemes.com/docs/dbmovies/tools/analyze-link-health). - **Domain exchanger**: replaces a domain in every link at once, when a host changes its address. See [Sources domain exchanger](https://doothemes.com/docs/dbmovies/tools/sources-domain-exchanger). # Metaupdater > The Meta Updater keeps the data of your imported titles up to date: ratings, cast, images and details from TMDb and IMDb. This page explains how to update one title, all your catalog at once or automatically in the background, and what each setting does. Source: https://doothemes.com/docs/dbmovies/tools/metaupdater --- ## Overview TMDb and IMDb data changes over time: ratings and votes move, new cast is confirmed, posters and backdrops are replaced. The Meta Updater refreshes the titles you already imported with the latest data, without importing them again. There are three ways to use it: - **One title**, with its **Update** button. - **All your catalog at once**, from the **Meta updater** panel of the importer. - **Automatically**, in the background, with **Automatize**. ## What is updated Each update reads the title again from TMDb and IMDb and refreshes: - the details: original title, tagline, release date, runtime, status and so on; - the TMDb and IMDb ratings and votes, and with them the rating of your site; - the cast and crew; - the genres, release year, countries and tags; - the poster, backdrops and logos (the featured image is only uploaded if the title has none); - the related titles that TMDb recommends; - whether the title is already released (the **Released Content** switch of the Advanced box). The **Metadata** box is replaced with the fresh data, so changes you made there by hand are lost. What stays as it is: - your links; - your visitors' votes and views; - the rest of the Advanced box: badges, featured content, collections and platforms. If the IMDb data cannot be loaded, for example because you reached your daily limit, the title keeps its current IMDb values. ### Title, slug and content **Structural Capabilities**, in the settings, decides whether an update also rewrites these fields with your import templates: - **Update Custom Titles**: the title. - **Update Custom Permalinks**: the slug, the last part of the address. - **Update Custom Content**: the synopsis in the editor. All three are checked by default. :::note With these options checked, every update overwrites the title, slug and content of the title. Changes you made by hand are lost, and if TMDb changes the name of a title, its address changes too, so links to the old address stop working. On a published site, we recommend unchecking **Update Custom Permalinks**, and also the others if you edit titles or synopses by hand. ::: ## Updating one title In the **Movies**, **TV Shows** or **TV Episodes** list, click **Update** in the **Meta Updater** column. The title is refreshed right away. The editor of each title also has an update button at the top. ## Updating all your catalog 1. Open the importer (the **Dbmovies** menu). 2. Click **Meta updater** at the top of the results. Its panel opens. 3. Choose the content types to update: movies, TV shows and episodes. 4. Click **Start** and confirm. The panel shows the progress, how many titles were updated and how many had errors, and the time left. You can **Pause** and **Resume**, or **Stop**. You can close the panel and keep using the importer: the update goes on while the page stays open. If you leave the page, the panel offers to resume the next time you open it. It goes through all your published titles of those types, so on a large catalog it takes a while and uses requests of your daily limit. Run it at quiet hours. ![The Meta updater panel in the importer, with the content types, the progress bar and the Pause and Stop buttons](https://cdn.wupdater.com/dbmovies/docs/7b353f5aec4d6090.webp) ## Updating automatically Turn on **Automatize** and the Meta Updater keeps your catalog fresh on its own. Every few minutes, a short run updates the published titles whose data is older than the period you choose, the oldest first. Set it up in **Dbmovies › Settings › Data Importer › Meta Updater**: | Setting | Values | What it does | |---|---|---| | **Post Types** | Movies, TV Shows, Episodes | The content types it updates (all three by default) | | **Automatize** | On / Off | Turns on the automatic updates | | **Scheduler** | 1 to 7 days, 15, 30, 60 or 90 days | How old the data of a title can get before it is updated again (7 days by default) | | **Run every** | 1, 5, 10 or 15 minutes | How often a run starts (5 minutes by default) | | **Time per run** | 5, 10, 20 or 40 seconds | How long each run works (20 seconds by default). It never goes over 60% of the PHP time limit | - **What counts as updated.** Updating a title by hand or importing it counts too, so recently imported titles are not updated again until their period ends. - **Titles that cannot be updated.** A title that TMDb no longer has, or that has no TMDb ID, is skipped until its next period, instead of being retried in every run. ![Settings › Data Importer › Meta Updater, with Automatize on and the Scheduler, Run every and Time per run options](https://cdn.wupdater.com/dbmovies/docs/d3f2e32f8333d25a.webp) ### Pauses - **TMDb.** If TMDb limits your requests or stops answering, the runs pause and try again later. The titles stay pending for the next run. - **IMDb.** If your license runs out of daily requests, titles are still updated with their current IMDb values, and the runs pause for one hour. ### Status The **Meta updater** panel of the importer shows the state of the automatic updates: - whether they are on; - the period; - how many titles are due; - when the last run was. If they are paused, it shows why and when they resume. ### What it needs - **An active license.** The background tasks do not run without one. - **Scheduled tasks that run on time.** WordPress runs them when someone visits your site, so on a site with few visits, set up a server cron job that calls `wp-cron.php` every minute. A run every minute needs one. See [Cron Jobs](https://doothemes.com/docs/dbmovies/tools/cron-jobs). ## Requests and your daily limit Each movie or TV show that is updated uses one request of your daily limit for its IMDb data. Episodes do not use IMDb requests. A short period with a large catalog means many updates per day, so choose a period that fits your plan. See [License activation](https://doothemes.com/docs/dbmovies/license-activation#the-daily-request-limit). # Movies > Movies is the content type for the films on your site. This page explains how a movie is stored, how to create and edit one, how its address works and what each box of the editor does. Source: https://doothemes.com/docs/dbmovies/post-types/movies --- ## Overview Every film on your site is a movie: one record with its title, poster, synopsis, cast and crew, images, ratings and links. You can create movies in two ways: - **By importing them from TMDb.** This is the fastest way: it fills in almost everything for you. Use the importer in the **Dbmovies** menu, or **Quick import** from the movies list. See [Importers](https://doothemes.com/docs/dbmovies/modules/importers). - **By hand**, with the add button at the top of the **Movies** list, completing the fields yourself. You find **Movies** in your admin sidebar, with a video icon. From there you see all your movies, add new ones, and edit or delete them like regular posts. ## The movies list Besides the title and the date, the list has its own columns: | Column | What it shows | |---|---| | **Ratings** | The rating of your visitors and its number of votes | | **View count** | How many times the movie was viewed | | **Sources** | How many links the movie has | | **Badges** | The quality and language badges of the movie | | **Meta Updater** | An **Update** button that refreshes the movie from TMDb and IMDb right away | | **Featured Content** | **Add** or **Remove** the movie from your featured content | You can sort the list by **Ratings**, **View count** and **Sources**. **Quick import**, next to the add button at the top of the list, opens a field where you paste a TMDb or IMDb link or ID, for example `https://www.themoviedb.org/movie/550` or `tt0137523`. Dbmovies imports the movie and opens it in the editor. If it already exists, it tells you and offers to edit it. ![Movies list with the Ratings, View count, Sources, Badges, Meta Updater and Featured Content columns, and the Quick import field open](https://cdn.wupdater.com/dbmovies/docs/4171cdb3ac89bc32.webp) ### Quick Edit Hover a movie in the list and click **Quick Edit** to change it without opening the editor. Besides the WordPress fields, such as the title, the slug, the date and the status, you can change: - its badges, in **Quality** and **Language**, which open with its current badges. The options come from your lists in [Custom badges](https://doothemes.com/docs/dbmovies/settings/custom-badges#quick-edit); - its **Genres**, **Releases** and **Countries**, and its **Tags**. The cast and crew are not in Quick Edit: edit them in the **Persons** field of the editor, so the credits and the person pages stay in sync. To add genres, release years, countries or tags to several movies at once, select them and choose **Edit** in **Bulk actions**. Badges are changed one movie at a time. ![Quick Edit of a movie in the list, with the Quality and Language selectors and the Genres, Releases and Countries lists](https://cdn.wupdater.com/dbmovies/docs/53102c912991e5fe.webp) ## Permalink Every movie has its own address. You choose the word that comes before the movie name in **Settings › Permalinks**: 1. Go to **Settings › Permalinks**. 2. Scroll down to the **Dbmovies: Post Type** section. 3. In **Type: Movies**, enter the word you want. The default is `movies`. 4. Click **Save Changes**. With the default value, a movie address looks like this: ```permalink https://your-website.com/movies/star-wars-the-rise-of-skywalker ``` If you change it to `films`, the same movie moves to: ```permalink https://your-website.com/films/star-wars-the-rise-of-skywalker ``` If you leave the field empty, Dbmovies uses the default. Dbmovies refreshes your site addresses on its own when you save. :::info Changing the word changes the address of every movie you already published, and links shared with the old address stop working. Choose it before you open your site. ::: ## Editing a movie The movie editor has the standard WordPress fields and three Dbmovies boxes: **Metadata**, **Sources** and **Advanced**. ### Standard WordPress fields - **Title**: the name of the film on your site. - **Editor**: the synopsis or description. - **Featured image**: the poster. - **Comments**: turn comments on or off for this movie. - **Author**: the user who published it. ### Classifications Movies share these classifications with TV shows, so a genre or a person is the same across your whole catalog: - **Genres**: action, drama, comedy and so on. - **Releases**: the release year. - **Countries**: the production countries. - **Persons**: the cast and the directors. - **Tags**: the standard WordPress tags, for an extra level of labeling. Genres, Releases, Countries and Persons also have their own address setting in **Settings › Permalinks**, in the **Dbmovies: Taxonomies** section. ### Metadata The **Metadata** box holds the details of the film, in tabs: - **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. They connect the movie with TMDb and IMDb, so Dbmovies can keep it up to date. - **External Metric**: the age rating (**Rated**, for example PG-13 or R), and the rating and votes of TMDb and IMDb. - **Persons**: the directors and the cast, with the character each actor plays. When you import a movie, they come from TMDb. The directors are the people credited as Director, and a person that no title uses anymore is deleted. - **Images**: the main logo and backdrop, plus more logos and backdrops. ![The Metadata box of a movie, with its tabs and the Main data tab open](https://cdn.wupdater.com/dbmovies/docs/df37f8c3afc47ecb.webp) ### Sources The **Sources** box holds the links of the movie: streaming embeds, downloads and direct MP4 files. 1. Click **Add Link(s)**. 2. Paste one or more URLs, one per line. Invalid lines and empty lines are ignored. 3. Choose the **Type**, **Language** and **Quality**. For downloads, you can also set the **File size** and a **Password**. 4. Check **Available only for premium users** if only members can use these links. 5. Click **Add Link(s)**. The table below lists every link of the movie with its server, language, quality, requests, reports, dates and the user who added it. From there you edit or delete each one. Links from [Auto-Embed](https://doothemes.com/docs/dbmovies/settings/auto-embed-support) are not listed in this box: they are built on the fly from the movie's IDs. To manage all the links of your site in one place, use **Dbmovies › Links**. See [Link sources](https://doothemes.com/docs/dbmovies/modules/link-sources). ![The Sources box of a movie, with the add form open and the list of links below](https://cdn.wupdater.com/dbmovies/docs/a4e6b0a18b56688a.webp) ### Advanced The **Advanced** box controls how the movie appears on your site. It has two tabs. **Controls** - **Quality Badge** and **Language Badge**: the quality and language shown as badges on the poster. We suggest the highest quality and the original language. - **Message Badge**, **Custom Badge Class** and **Badge message expiration**: a short message on the poster, such as "New", with an optional CSS class and an end date. See [Custom badges](https://doothemes.com/docs/dbmovies/settings/custom-badges). - **Featured Content**: highlights the movie in your featured content. See [Featured content](https://doothemes.com/docs/dbmovies/modules/featured-content). - **Released Content**: marks the movie as already released. - **Exclusively in Theaters Now**: marks a movie that is only in theaters for now. - **(NSFW) Adult Content**: warns visitors that the movie is for adults. - **Auto-Embed**: turn it on to leave this movie out of Auto-Embed. **Relateds** - **Collections**: add the movie to one or more of your collections. - **Platforms**: links to the streaming platforms where the movie is available, such as its page on a streaming service. ![The Advanced box of a movie, Controls tab](https://cdn.wupdater.com/dbmovies/docs/8e8fce2e7637f73d.webp) ## Keeping a movie up to date Each movie stores its TMDb and IMDb IDs, so its ratings, votes, cast and images can be refreshed without editing it by hand: - **One movie**: click **Update** in the **Meta Updater** column of the movies list. - **Your whole catalog**: turn on the automatic [Meta Updater](https://doothemes.com/docs/dbmovies/tools/metaupdater), which refreshes your titles on a schedule in the background. # Payments > Payments records every charge of your site: memberships paid with PayPal or by hand, and ad campaigns. This page explains the Payments screen, payment statuses and methods, how payments activate and extend subscriptions, refunds, and currency and taxes. Source: https://doothemes.com/docs/dbmovies/modules/payments --- ## Overview **Dbmovies › Payments** lists every payment recorded on your site. Each payment belongs to a user and pays for something: - **a subscription**: the membership of a user; - **an ad**: a campaign in your ad slots. Payments arrive in two ways: - **Automatically**, from PayPal, when a member subscribes and on every renewal. See [Subscriptions](https://doothemes.com/docs/dbmovies/modules/subscriptions). - **By hand**, when you receive money another way, such as a bank transfer, and register it here. The status of a payment drives its subscription: a completed payment activates or extends it, and a refund takes those days back. ## The Payments screen At the top, a chart shows the daily revenue of the last 90 days, with the number of payments, the revenue and the gross total of the period. Below, the list shows every payment: | Column | What it shows | |---|---| | **ID / Hash** | The number and unique hash of the payment | | **Status** | Pending, Completed, Failed or Refunded | | **User** | Who paid | | **Module** | What it pays for: Subscription or Ad | | **Payable** | The subscription or ad it pays | | **Amount** | The total, in your currency | | **Method** | Manual, PayPal, Stripe, Crypto or Bank transfer | | **Reference** | Your reference, such as a bank receipt number | | **Paid** | When it was paid | | **Created** | When it was recorded | Search by user, hash, reference or PayPal transaction, and filter by status, module and method. The **Payments** badge in the admin toolbar counts the pending ones. ![Dbmovies › Payments, with the revenue chart, the filters and the list of payments](https://cdn.wupdater.com/dbmovies/docs/e4c8833261d01cf8.webp) ## Payment statuses - **Pending**: recorded but not confirmed yet. It does not change the subscription and does not count as revenue. - **Completed**: confirmed. It activates or extends its subscription and counts as revenue. - **Failed**: the charge did not go through. It has no effect. - **Refunded**: the money was returned. It takes back the days it had added to the subscription. Keep statuses accurate: a payment left as **Pending** is not counted in your revenue. ## Payment methods The method records how the member paid: **Manual**, **PayPal**, **Stripe**, **Crypto** or **Bank transfer**. It is informational: it does not change how the payment works, but it helps you match your payments with your real accounts. Automatic charges work with **PayPal**. Payments that arrive any other way are registered by hand with their method. ## Registering a payment 1. Click **Add payment**. 2. Choose the **Module**: **Subscription** or **Ad**. 3. Search for what is being paid: a subscription by user name, email or plan, or an ad by title or hash. 4. Fill in the amount, the method, the status and, if you want, a reference (for example, the receipt number of a bank transfer). 5. Save. Before you save, the panel tells you what will happen to the subscription: - **Subscription will be activated**: it starts now and lasts the days of its plan. - **Subscription will be extended**: the days of the plan are added to its current end date, so the member does not lose days. - **No subscription change**: the payment is saved as pending. You can also register a payment from the editor of a subscription, where it is linked to that subscription directly. A payment for an ad is assigned to that ad permanently. If the ad has no advertiser yet, the panel lets you set one. ![The Add payment panel, with the Subscription module, a subscription selected and the message of what will happen to it](https://cdn.wupdater.com/dbmovies/docs/69c25376e6ccbcf9.webp) ## Editing a payment Click a payment to open its panel. There you see who paid and what for, with a link to the user profile, and you can change: - **Status & method** - **Amount & tax**: the subtotal, the tax type and percentage, the tax amount and the total - **References**: your reference and the **Gateway transaction ID** of PayPal or Stripe - **Paid at**: the date of the payment. If you leave it empty, a completed payment takes the current date. - **Operator note**: a private note for your team **Quick actions** save right away: - **Mark as completed**: confirms a pending payment and credits its subscription. - **Refund**: marks the payment as refunded and takes back the days it had added. Other changes need **Save changes**. ![The edit panel of a payment, with Quick actions, Status & method and Amount & tax](https://cdn.wupdater.com/dbmovies/docs/9d5ef8e09172ecb6.webp) ## Refunds and deleting payments Refunding or deleting a completed payment reverts its effect on the subscription: - if it was the only payment, the subscription goes back to pending; - otherwise, the days it added are subtracted from the end date, and the subscription expires if no time is left. Before you delete a payment, the panel shows the exact effect on the subscription and asks you to confirm. Deleting cannot be undone. To keep a record of a returned charge, mark it as **Refunded** instead of deleting it. ## PayPal payments When a member pays with PayPal, Dbmovies records the payment on its own, with the PayPal transaction ID, on the first charge and on every renewal. PayPal also tells your site about failed charges, refunds and cancellations, and the payment and its subscription follow them. The transaction ID keeps each PayPal charge from being recorded twice. To set up PayPal, see [Subscriptions](https://doothemes.com/docs/dbmovies/modules/subscriptions). ## Currency and taxes Set your currency and taxes in **Dbmovies › Settings › Subscriptions**: - **Currency options**: currency name, decimals, symbol and its position. - **Taxes**: - **Tax percentage**; - **Tax code**; - **Tax type**: **Inclusive**, when the price includes the tax, or **Exclusive**, when the tax is added on top. Each payment keeps its own amount and tax, so changing these settings does not change the payments you already have. Revenue and taxes are calculated from completed payments. # Persons > Persons are the cast and crew of your movies and TV shows. This page explains how persons are imported with their profile, how their credits work, the person fields you can edit, and how persons that no title uses are removed. Source: https://doothemes.com/docs/dbmovies/taxonomies/persons --- ## Overview Persons are the people of your catalog: actors, directors and creators. Each person has a profile with photo, biography and dates, and a page that lists the titles they appear in. A person is shared by all their titles, so their page gathers their whole career on your site. You find **Persons** in the **Movies** and **TV Shows** menus. ## How persons are imported When you import a title, Dbmovies adds its cast and crew, if **Persons** is checked in **Dbmovies › Settings › Data Importer › Initial settings › Taxonomies**: - **Movies:** the cast and the people credited as Director. - **TV shows:** the creators and the main cast of all their seasons, ordered by the number of episodes each actor appears in. How many of each you import is set in **Dbmovies › Settings › Data Importer › Import Limits**: **Casting**, **Directors** and **Creators** (by default 5, 1 and 1). See [Import limits](https://doothemes.com/docs/dbmovies/settings/import-limits). The first time a person appears, Dbmovies creates their profile from TMDb, with one request to TMDb: - **Profile:** photo, biography, gender, birthday, birthplace and date of death. - **Links:** website and social profiles (Instagram, Facebook, X, TikTok and YouTube). - **IDs:** their TMDb and IMDb IDs. When the person appears in another title, the same profile is reused. Two different people with the same name get separate profiles. The photo is loaded from TMDb, or from your CDN if you set one, and is not uploaded to your server. ## Credits The credits of each title (who acts, who directs and which character each actor plays, in billing order) are in the **Persons** tab of its **Metadata** box. See [Movies](https://doothemes.com/docs/dbmovies/post-types/movies#metadata) and [TV Shows](https://doothemes.com/docs/dbmovies/post-types/tvshows#metadata). Your theme uses them to show the cast of each title and the page of each person, with the titles they appear in. Dbmovies also gives your theme the titles each person is known for and how many movies and TV shows they have on your site. ## Editing a person Open a person to edit their name, slug and profile: - **Profile picture** - **Biography** - **Website** - **Gender** - **Birth Place**, **Birthday** and **Death Date** - **Themoviedb ID** and **IMDb ID** - **Instagram**, **Facebook**, **Twitter**, **TikTok** and **YouTube** ![Person complete editor](https://cdn.wupdater.com/dbmovies/docs/1f11fb372c38ea7e.webp) ## Persons that no title uses When an update removes a person from a title and no other title uses them, Dbmovies deletes the person right away. To clean up persons left by older versions or by deleted titles, use **Cleanup orphan persons**, in the importer. It keeps the persons of titles that are drafts, scheduled or in the trash. See [Cleanup orphaned persons](https://doothemes.com/docs/dbmovies/tools/cleanup-orphaned-persons). ## Permalink You choose the word before the person name in **Settings › Permalinks**, section **Dbmovies: Taxonomies**, field **Taxonomy: Persons**. The default is `person`: ```permalink https://your-website.com/person/pedro-pascal/ ``` Changing the word changes the address of every person page. Choose it before you open your site. # Redis cache > Redis keeps the data of your site in memory between visits, so WordPress and Dbmovies do not ask the database for the same data again and again. This guide explains what Dbmovies keeps in the cache, how to set up Redis, and how to check it. Source: https://doothemes.com/docs/dbmovies/guides/redis-cache --- ## Overview Redis keeps data in memory between visits, so WordPress and Dbmovies do not ask the database for the same data again and again. On a site with a large catalog and a lot of traffic, it is the change that lowers the load on your server the most. WordPress calls this a **persistent object cache**. Without one, WordPress keeps its cache only while a page loads, and starts again on the next visit. Redis is the most common option. Memcached works too, with its own plugin. Dbmovies works without Redis, and nothing changes in how you use it. Redis only makes it faster. ## What Dbmovies keeps in the cache | Data | How long | Refreshed | |---|---|---| | The archive lists of your theme: movies, TV shows, collections, and the pages of genres, years, countries and tags | 60 minutes | Right away when you publish, edit or delete a title | | Live search and the search page | **Cache duration** of Live search, in [Core modules](https://doothemes.com/docs/dbmovies/settings/core-modules). 20 minutes by default | Right away when you publish, edit or delete a title | | Related titles | **Cache duration** of Related content, in Core modules. 60 minutes by default | When you edit the title | | The data of each title that your theme loads | 5 minutes | When you edit the title | | Person pages: credits and filmography | 6 to 12 hours | When you edit a title of that person | Lists sorted by views or rating follow those numbers with a delay of up to 60 minutes. Before Dbmovies 1.3.37, new titles took up to 60 minutes to show in the archive lists with Redis: if that happens on your site, update Dbmovies. WordPress also keeps its own data in Redis: settings, title data, terms and users. The temporary data of Dbmovies, such as the limits of the sign-in forms, moves from the database to memory. ## What you need - **A Redis server.** Many hosts include it: look for it in your hosting panel, or ask your host. On your own server (a VPS), install it. On Ubuntu or Debian: `sudo apt install redis-server`. - **The PHP extension PhpRedis** (`redis`), recommended. Without it, the plugin uses a PHP library that it includes, which is slower. - **The Redis Object Cache plugin**, free in the WordPress plugin directory. ## Set it up 1. In **Plugins › Add New Plugin**, search for **[Redis Object Cache](https://wordpress.org/plugins/redis-cache/)**, install it and activate it. 2. If Redis is not on the same server with its default settings (`127.0.0.1`, port `6379`, no password), add the connection to `wp-config.php`, above the line `/* That's all, stop editing! */`. Your host gives you these values, and you only need the ones that change: ```php define('WP_REDIS_HOST', '127.0.0.1'); define('WP_REDIS_PORT', 6379); define('WP_REDIS_PASSWORD', 'your-password'); define('WP_REDIS_DATABASE', 0); define('WP_REDIS_PREFIX', 'your-website'); ``` 3. Go to **Settings › Redis** and click **Enable Object Cache**. The status changes to **Connected**. ![Settings › Redis, with Status Connected](https://cdn.wupdater.com/dbmovies/docs/0acb53a4dcf94c3e.webp) ### Several sites on one Redis server If more than one site uses the same Redis server, give each site its own prefix with `WP_REDIS_PREFIX`, or its own database with `WP_REDIS_DATABASE` (from 0 to 15). Without that, the sites can mix their data, and one site may show titles or settings of another. ### Memory Give Redis a memory limit, and let it remove the oldest data when it is full. In `redis.conf`: ```text maxmemory 256mb maxmemory-policy allkeys-lru ``` 256 MB is a good start. A catalog of tens of thousands of titles may need more. On a managed host, your host usually sets this for you. ## Check that it works 1. In **Settings › Redis**, the status says **Connected**. 2. In **Tools › Site Health**, open the **Dbmovies** tab: the **Persistent object cache** row says **In use**. ![Tools › Site Health › Dbmovies, with the Persistent object cache row In use](https://cdn.wupdater.com/dbmovies/docs/95604eb4361a8200.webp) ## Clear the cache Dbmovies refreshes its data in the cache when you change it, and the tools in **Dbmovies › Tools** clear what they need on their own. You rarely need to clear the cache by hand. Click **Flush Cache** in **Settings › Redis** when: - you change the database directly, for example with phpMyAdmin; - you migrate the site or move it to another domain; - the site shows old data after an update. Clearing the cache is safe. It fills again with the next visits, and the first ones are a little slower. ## Redis and a page cache They do different jobs, and they work well together: - A **page cache**, from a cache plugin or a CDN such as Cloudflare, saves whole pages and serves them without running WordPress. - **Redis** speeds up everything that still runs WordPress: the lists that load as visitors browse, the search, the admin and the pages of signed-in members. On a Dbmovies site much of that is dynamic, so Redis helps even when you use a page cache. ## Troubleshooting | Problem | What to do | |---|---| | The status says **Not connected** | Redis is not running, or the connection data is wrong. Check the host, port and password with your host | | *A foreign object cache drop-in was found* | Another plugin, often a cache plugin, has its own object cache. Use only one: turn off the object cache of the other plugin, then click **Enable Object Cache** | | The site shows errors or old data after you enable it | Click **Flush Cache**. If the problem stays, click **Disable Object Cache**: the site goes back to working without Redis | # Releases > Releases group your movies and TV shows by release year. This page explains how the year is set and how to configure the address of the year pages. Source: https://doothemes.com/docs/dbmovies/taxonomies/releases --- ## Overview Releases group your movies and TV shows by the year they came out: one term per year, such as `2024`. Your visitors can browse all the titles of a year from its page. You find **Releases** in the **Movies** and **TV Shows** menus. ## How the year is set When you import a title, Dbmovies adds its year, if **Release years** is checked in **Dbmovies › Settings › Data Importer › Initial settings › Taxonomies**: - **Movies:** the year of their release date. - **TV shows:** the year of their first air date. Each year is created only once and shared by all the titles of that year. If a title has no release date on TMDb, it gets no year. ## Permalink You choose the word before the year in **Settings › Permalinks**, section **Dbmovies: Taxonomies**, field **Taxonomy: Releases**. The default is `release`: ```permalink https://your-website.com/release/2024/ ``` Changing the word changes the address of every year page. Choose it before you open your site. # Required pages > Dbmovies and your theme use a few WordPress pages for signing in, the member account and more. This page explains what each required page does, how they are created for you, and how to use your own pages or change their address. Source: https://doothemes.com/docs/dbmovies/settings/required-pages --- ## Overview Signing in, signing up and the member account live on regular WordPress pages that use a special page template. You tell Dbmovies which page does what in **Dbmovies › Settings › Main settings**, section **Required pages**. ![Dbmovies › Settings › Main settings, section Required pages, with each page assigned](https://cdn.wupdater.com/dbmovies/docs/0cd82e21cf9abeed.webp) ## The pages are created for you When you install Dbmovies with a Doothemes theme such as Wovie active, Dbmovies creates its pages and assigns them on its own: | Page | Address | Template | |---|---|---| | **Authentication** | `/auth/` | User Auth | | **Account** | `/account/` | User Account | | **Browser** | `/browser/` | Browser Page | | **Contact** | `/contact/` | Contact Page | If you activated your theme after Dbmovies, or you deleted one of these pages, create them again in **Dbmovies › Tools › Restorer › Create and sort required pages**. It creates only the pages that are missing and leaves your existing pages as they are. See [Restorer](https://doothemes.com/docs/dbmovies/tools/restorer#create-and-sort-required-pages). In **Pages › All Pages**, each assigned page shows a label next to its name, such as **User Authentication** or **User Dashboard**, so you know not to delete it. ## What each page does ### Authentication page Signing in, signing up and recovering a password. Each form has its own address: - `/auth/login/`: sign in; - `/auth/signup/`: create an account; - `/auth/password/`: recover a password. The **Sign in** and **Sign up** buttons of your theme, the sign-in link of the comments and the actions that need an account, such as **My list**, all lead here. Members who are already signed in are sent to their account. ### Account page The member area. With Wovie, it has these sections: - **Overview**, **My list** and **Ratings**; - **Requests**, the titles the member asked for; - **Membership** (`/account/plans/`), with their plan and payments; - **Settings**, for their profile and password. Visitors who are not signed in are sent to the Authentication page. After paying with PayPal, members come back to **Membership**, and the subscription emails link there too. ### Browser page and Contact page These pages are reserved for themes that include a content browser or a contact page. If your theme does not use them, you can leave them unassigned. ### Terms of Use page and Privacy policies page Optional. Assign the pages with your terms and conditions and your privacy policy, so you keep them identified in Dbmovies. These pages are not created for you: write them as regular pages. ## Using your own pages You can use any page instead of the ones Dbmovies created: 1. Create the page in **Pages › Add New** and give it a title. 2. In the page settings, choose its template in **Template**: **User Auth** for the Authentication page, **User Account** for the Account page. 3. Publish it. 4. Assign it in **Dbmovies › Settings › Main settings › Required pages** and save. The template shows the forms and sections on its own: you do not need to add anything to the content of the page. :::note The Authentication and Account pages only work with their template. A page without it shows its own content, but no forms or sections. ::: ## Changing the address To change an address, for example from `/auth/` to `/sign-in/`, edit the slug of the page in **Pages**. All the forms and sections move with it, such as `/sign-in/login/`. The page can also be a child of another page, such as `/members/sign-in/`. Since Dbmovies 1.3.37, the addresses are updated on their own when you change the slug of a page or assign a different one. In earlier versions, go to **Settings › Permalinks** and click **Save Changes** afterwards. ## Troubleshooting - **Sign in, Sign up or a section of the account shows a 404 page.** Go to **Settings › Permalinks** and click **Save Changes**. Also check that your site uses pretty permalinks (any option except **Plain**), and that the page is published and assigned. - **The Authentication or Account page shows no forms.** Check that the page uses its template (**User Auth** or **User Account**). - **A required page was deleted.** Restore it from **Pages › Trash**, or create it again with the Restorer. ![Pages › All Pages, with the User Authentication and User Dashboard labels next to the Authentication and Account pages](https://cdn.wupdater.com/dbmovies/docs/1bc05abf85e70f35.webp) # Requirements > Before installing Dbmovies, make sure your server and your WordPress site meet these requirements. Most activation and import errors come from a server that cannot reach external services or is missing a PHP extension. Source: https://doothemes.com/docs/dbmovies/requirements --- ## Server requirements - **WordPress 7.0** or higher, kept up to date. - **PHP 8.1** or higher. - **MySQL 5.7** or higher, or **MariaDB 10.3** or higher. - These PHP extensions: - **OpenSSL**, to store your license securely and to verify Google sign-in. - **mbstring**, used when importing links from a spreadsheet. - **cURL** (recommended). WordPress uses it for the requests to TMDb, the Doothemes server and PayPal. - **Pretty permalinks** turned on in **Settings › Permalinks**. The REST API and the link routes of Dbmovies need them. - **Outgoing HTTPS connections.** Some hosts block them by default. If yours does, ask your provider to allow the services listed below. ## Recommended - **PHP 8.3** or newer, for better performance and active security support. - **MySQL 8.0** or higher, or **MariaDB 10.6** or higher. - **A memory limit of 256 MB** or more. Bulk imports and episode creation use more memory than a regular page load. - **`max_execution_time` of 90 seconds** or more. Background tasks, such as Automatic episodes and the Meta Updater, work for up to 60% of this limit on each run. - **A server cron job** that calls `wp-cron.php` every minute. WordPress runs scheduled tasks only when someone visits your site, so on a site with few visits the background tasks would fall behind. Site Health shows whether scheduled tasks are running on time. - **The GD extension with WebP support**, to convert imported images to WebP (an option in the import settings). - **An object cache**, such as Redis or Memcached, and a **CDN** for images on large catalogs. See [Redis cache](https://doothemes.com/docs/dbmovies/guides/redis-cache). - **Enough disk space.** Imported posters, backdrops and episode images are stored in your media library and grow quickly with large catalogs. ## HTTPS Your site needs an SSL certificate (HTTPS) if you use: - **PayPal** to charge memberships: PayPal only sends its notifications (webhooks) to HTTPS addresses. - **Google sign-in**: Google only accepts HTTPS sites. We recommend HTTPS on every site anyway. ## External services Your server connects to these services. If your host restricts outgoing connections, ask your provider to allow them. | Service | Address | Used for | |---|---|---| | TMDb | `api.themoviedb.org`, `image.tmdb.org` | Title data and images | | Doothemes | `edge.wupdater.com` | License, updates, IMDb data and the TMDb proxy | | PayPal | `api-m.paypal.com` | Membership billing (only if you turn on PayPal) | | Google | `www.googleapis.com` | Google sign-in (only if you turn it on) | | Link hosts | MEGA, 1fichier, MediaFire, MegaUp, YouTube | Link health checks (only when you run them) | If your server cannot reach TMDb, turn on the TMDb proxy in the import settings. Dbmovies then reaches TMDb through the Doothemes server (this needs an active license). ## What you need before installing ### A TMDb API key The Movie Database (TMDb) is the source of the movie and TV show data. Create a free account at [themoviedb.org](https://www.themoviedb.org) and request an API key in your account settings. Without this key, the importers cannot retrieve any content. ### Your Dbmovies license key After your purchase, you receive your license key by email, and you can also find it in your Doothemes account. You activate it in **Dbmovies › Updates**. See [License activation](https://doothemes.com/docs/dbmovies/license-activation). Your license: - **Enables the plugin.** Importing titles, the background tasks (Automatic episodes and the Meta Updater) and saving the plugin settings need an active license. Content you already imported keeps working if it expires. - **Delivers updates** to your WordPress admin, for the time your plan includes. - **Sets your daily API requests.** Some features use the Doothemes server: IMDb ratings for each movie or TV show you import or update, the TMDb proxy, and license checks. Requests to TMDb with your own API key do not count. The importer shows how many requests you used today. You do not need any other Doothemes account, key or credits. ### An administrator account You need a WordPress user with the Administrator role to install the plugin and activate the license. ## Before you continue - Check that your server can make outgoing HTTPS connections. - Have your TMDb API key and your Dbmovies license key at hand. - Sign in to WordPress as an administrator. When your server meets these requirements, continue with [Installation](https://doothemes.com/docs/dbmovies/installation). # Restorer > The Restorer resets Dbmovies modules to their initial state, repairs the database and creates the required pages. This page explains what each action deletes and what it keeps, so you can use it safely. Source: https://doothemes.com/docs/dbmovies/tools/restorer --- ![Dbmovies › Tools › Restorer, with an action selected and its Impact notice](https://cdn.wupdater.com/dbmovies/docs/2a3a12fd4825c53b.webp) ## Overview The **Restorer** returns a module of Dbmovies to its initial state, for example to delete test data before you launch your site. It also has two safe actions that repair the database and create the required pages. You find it in **Dbmovies › Tools › Restorer**. Only administrators can use it. :::note Removal actions **cannot be undone**. Before you run one, make a backup of your database. Use them only when you really need to start a module from zero: to fix a single title, link or subscription, edit it in its own screen instead. ::: ## How to use it 1. Choose an action in the list. An **Impact** notice explains what it does, with its level: - **Safe**: it does not delete anything. - **Destructive**: it deletes data from one module. - **Critical**: it deletes data your visitors or members use right now, such as links or subscriptions. 2. Click **Restore**. 3. Read the confirmation and click **Yes, execute**. Under the button, the panel shows the last action you ran and how long ago. ## Removal actions | Action | Level | What it deletes | |---|---|---| | **Reset view counter** | Destructive | The views of every title, and the most viewed list. Counting starts again from zero. | | **Reset user ratings** | Destructive | All the votes and the rating of every title. | | **Reset the links of sources module** | Critical | All the links of every title. | | **Reset the reports of sources module** | Destructive | All the reports your visitors sent about links. | | **Reset the subscriptions module** | Critical | All the subscriptions: active, past and cancelled. | | **Reset payments** | Critical | All the payments of subscriptions and ads. | | **Reset featured content** | Destructive | The featured mark of every title. | None of them deletes your movies, TV shows, episodes or settings. ### Reset view counter Deletes the view count of every title and empties the most viewed list. Counting starts again with the next visits. See [View counter](https://doothemes.com/docs/dbmovies/modules/view-counter). ### Reset user ratings Deletes every vote, from visitors and from imports, and the rating of every title. Titles show no rating until they get votes again. The IMDb and TMDb ratings come back as a title is imported or updated: the [Meta Updater](https://doothemes.com/docs/dbmovies/tools/metaupdater) adds them again as one vote each. Visitor votes do not come back. See [User ratings](https://doothemes.com/docs/dbmovies/modules/user-ratings). ### Reset the links of sources module Deletes every link of every title. Your titles stay published, but without players or downloads, so your visitors lose access to the content right away. The reports of those links are not deleted: use **Reset the reports of sources module** for that. See [Link sources](https://doothemes.com/docs/dbmovies/modules/link-sources). ### Reset the reports of sources module Deletes every report your visitors sent about broken links. The links themselves are not touched. ### Reset the subscriptions module Deletes every subscription. Members with an active subscription lose access right away. Payments are kept. :::note This action does **not** cancel subscriptions in PayPal. PayPal keeps charging your members, and those charges no longer reach your site. Before you run it, open each PayPal subscription in **Dbmovies › Subscriptions** and click **Cancel renewal**, or set it to **Cancelled**: both stop the charges in PayPal. See [Subscriptions](https://doothemes.com/docs/dbmovies/modules/subscriptions). ::: ### Reset payments Deletes every payment, of subscriptions and of ads. The totals paid of each subscription and ad, and the charts of **Dbmovies › Payments**, go back to zero. Subscriptions and ads are kept, with their dates. See [Payments](https://doothemes.com/docs/dbmovies/modules/payments). This only deletes the records on your site: it does not refund or cancel anything in PayPal. ### Reset featured content Removes the featured mark from every title. Titles are not deleted, and you can mark them again at any time. See [Featured content](https://doothemes.com/docs/dbmovies/modules/featured-content). ## Creation actions These actions are **Safe**: they do not delete anything, and you can run them as many times as you need. ### Repair database Checks the Dbmovies database tables against what the installed version needs, creates any table that is missing and applies pending changes. Your data is kept. Use it when Dbmovies reports a database problem, after an update that did not finish, or if a table was deleted by hand. The panel tells you if the database is complete, or how many changes are still pending. ### Create and sort required pages Creates the pages your theme needs and assigns them in the settings: **Browser**, **Authentication**, **Account** and **Contact**. Each one is created with its page template. - A page that is already assigned, and uses its template, is left as it is. - Your existing pages are not modified. - The pages are only created if your active theme includes their templates, as Wovie does. The **Terms of Use** and **Privacy policies** pages are not created: assign them yourself. See [Initial settings](https://doothemes.com/docs/dbmovies/initial-settings). ![The Restorer confirmation dialog for a critical action, with the Yes, execute button](https://cdn.wupdater.com/dbmovies/docs/4e7224881830d2df.webp) # Sign in with Google > Sign in with Google lets your visitors sign in or create an account with their Google account, in one click and without a password. This page explains how to create your Client ID in Google Cloud, each setting, how accounts are matched and what members see in their account. Source: https://doothemes.com/docs/dbmovies/integrations/sign-in-with-google --- ## Overview With **Sign in with Google**, the sign-in and sign-up forms of your site show a **Continue with Google** button. Your visitors sign in with their Google account in one click: - **No password to remember** and no verification code to wait for: Google already confirmed their email address. - **New visitors get an account** on the spot, if you allow it. - **Members who already have an account** with the same email sign in to it. You set it up in **Dbmovies › Settings › Integrations**. It is free, and it only needs a **Client ID** from Google. ## What you need - **A Google account** to sign in to Google Cloud. - **Your site on HTTPS.** Google only accepts secure addresses, except `localhost`. - **A theme that shows the button.** Wovie shows it on the sign-in and sign-up forms. ## Create your Client ID 1. Go to [Google Cloud Console](https://console.cloud.google.com/) and create a project, or choose one you already have. 2. Open **APIs & Services › Credentials**. 3. If Google asks you to configure the consent screen, do it first: - **App name:** the name your visitors see when they sign in, usually the name of your site. - **Support email:** an address of yours. - **Audience:** External. 4. Click **Create credentials › OAuth client ID**, and choose **Web application**. 5. In **Authorized JavaScript origins**, click **Add URI** and paste the address of your site **exactly as Dbmovies shows it** in the settings, such as `https://your-website.com`. It includes `https` and, if your site uses it, `www`. 6. Leave **Authorized redirect URIs** empty: Dbmovies does not use them, and it does not need a client secret either. 7. Click **Create** and copy the **Client ID**. It ends with `.apps.googleusercontent.com`. 8. **Publish the app.** In the consent screen settings (**Audience**), set the publishing status to **In production** with **Publish app**. While the app is in testing, only the test users you list can sign in. Dbmovies only asks for the name, email and photo of your visitors, so Google does not need to review the app. [SCREENSHOT_HERE: Google Cloud Console, creating an OAuth client ID of type Web application, with the Authorized JavaScript origins of the site] ## Settings In **Dbmovies › Settings › Integrations**, section **Sign in with Google**: | Setting | What it does | Default | |---|---|---| | **Sign in with Google** | Shows the Google button in the sign-in and sign-up forms | Off | | **Client ID** | Your Client ID. Dbmovies checks that it has the right format when you save. Empty hides the button | Empty | | **Allow new accounts** | On: a visitor with no account gets one. Off: only visitors who already have an account can sign in with Google, and the button disappears from the sign-up form | On | Below the switch, the settings show the address to paste in **Authorized JavaScript origins**. ![Dbmovies › Settings › Integrations, Sign in with Google, with the switch, the origin to authorize, Client ID and Allow new accounts](https://cdn.wupdater.com/dbmovies/docs/90a26a9fd5608e3b.webp) ### Check that it works 1. Open your sign-in page in a private window. 2. Click **Continue with Google** and choose a Google account. 3. You land in the member account, signed in. ## How the account is found Every time someone signs in with Google, Dbmovies looks for their account in this order: 1. **An account already connected** to that Google account. They sign in to it. 2. **An account with the same email address.** The first time, Dbmovies connects it to Google, and they sign in to it. This also completes a sign-up that was started with that email and never confirmed with its code. 3. **No account:** - **With Allow new accounts on,** Dbmovies creates one with the name and email from Google, with the role of a regular member. It sends the welcome email, and the visitor lands in their new account. - **With Allow new accounts off,** the visitor sees: *There is no account with this Google email. Sign up first.* New accounts follow the same rules as the sign-up form. If the [Firewall](https://doothemes.com/docs/dbmovies/settings/firewall) verifies email addresses, a disposable address is rejected, and a blocked IP address cannot sign in with Google either. ## The member account In **Account › Settings**, members see a **Google** row with the connected address and the date it was connected. - **To connect Google to an existing account,** the member signs in with the Google account that uses the same email as their account. There is no separate connect button. - **Accounts created with Google have no password.** Google is their only way in until the member sets a password in their account settings, or with **Forgot password**. The first password does not ask for a current one. Changing the email of the account also needs a password of their own first. - **To disconnect Google,** the member needs a password of their own, and confirms it. From then on, they sign in with their email and password. [SCREENSHOT_HERE: Account › Settings in Wovie, with the Google row connected and the Disconnect Google form] ## What is stored Dbmovies stores the Google ID of the account, its email, name and photo address, and the date it was connected, in the profile of the user. It does not store any password or access key from Google, and it does not ask for anything else. ## Security - **Each sign-in is verified on your server.** Dbmovies checks the signature, issuer, recipient (your Client ID), expiry and verified email of the token that Google sends. Each token works once. - **The same limits as the forms apply:** after 10 failed sign-ins or new accounts from the same IP address in 15 minutes, Google sign-in pauses for that address. See [Firewall](https://doothemes.com/docs/dbmovies/settings/firewall#built-in-limits). - **Administrators can sign in with Google too,** if their email is a Google account. Turn on 2-step verification in that Google account. ## Troubleshooting | Problem | What to do | |---|---| | The button does not appear | Check that **Sign in with Google** is on and the **Client ID** is saved. In the sign-up form, also check **Allow new accounts**. If an extension or a network blocks the scripts of Google, the button stays hidden | | Google shows an error about the origin | The address of your site is missing from **Authorized JavaScript origins**, or it is written differently. Copy it again from the Dbmovies settings, with `https` and with or without `www` as your site uses it | | Only you can sign in, other visitors get an access error | The app is still in testing. Publish it in the consent screen settings of Google Cloud | | *We could not verify your Google account. Please try again.* | The Client ID in Dbmovies does not match the one of the button, or the clock of your server is wrong. Check both. Your server must also be able to reach `googleapis.com` | | *There is no account with this Google email. Sign up first.* | **Allow new accounts** is off, and no account uses that email | | *This account is already linked to a different Google account.* | The account with that email is connected to another Google account. The member signs in with that one, or disconnects it from their account settings | | *Too many requests from your location. Please try again later.* | Too many failed attempts or new accounts from that IP address. Wait 15 minutes | | *Google sign-in is not available.* | The setting is off or the Client ID is not valid | # Sources domain exchanger > The Sources domain exchanger replaces a domain in all your links at once, for example when a host moves to a new domain. This page explains how the replacement works, what to type so it only changes the right links, and what to do afterwards. Source: https://doothemes.com/docs/dbmovies/tools/sources-domain-exchanger --- ![Dbmovies › Tools › Sources domain exchanger, with the Old domain and New domain fields and the result of the last exchange](https://cdn.wupdater.com/dbmovies/docs/6c5677543522b24c.webp) ## Overview Hosts change their domain from time to time, for example from `streamhost.com` to `streamhost.to`. When that happens, every link you have on the old domain stops working. The **Sources domain exchanger** replaces the old domain with the new one in all your links at once, so you do not have to edit them one by one. You find it in **Dbmovies › Tools**, or in the **Tools** menu of **Dbmovies › Links** (**Domain exchanger**). Only administrators can use it. ## How the replacement works The tool looks for the exact text you type in **Old domain** inside the address of every link, and replaces it with the text in **New domain**. - **It matches text, not whole domains.** The text is replaced wherever it appears in the address, also as part of a longer domain or of a path. - **It is exact.** Upper and lower case must match. - **It changes the address of the link only.** Subtitles, quality, language, password and the other details of each link stay as they are. Your titles are not touched. You can type a domain, such as `streamhost.com`, or the start of an address, such as `https://streamhost.com/`. ### Type as much as you can Because it matches text, a short value can change links you did not want to change. Include the protocol and the slash at the end: | You type in Old domain | It also changes | |---|---| | `host.co` | Links on `host.com`, `myhost.co` and `cdn.host.co` | | `host.co/` | Links on `myhost.co/` and `cdn.host.co/` | | `https://host.co/` | Only links that start with `https://host.co/` | If your links use more than one form of the address, such as `https://host.co/` and `https://www.host.co/`, run the tool once for each form. ## Exchanging a domain 1. Make a backup of your database. 2. Go to **Dbmovies › Tools › Sources domain exchanger**. 3. Type the current address in **Old domain**, for example `https://streamhost.com/`. 4. Type the new address in **New domain**, for example `https://streamhost.to/`. 5. Click **Exchange**. :::note The exchange runs as soon as you click **Exchange**, without asking for confirmation, and changes all the matching links at once. Check what you typed before clicking. ::: The panel shows how many links were updated. Under the button, it keeps the result of the last exchange and how long ago it ran. - **"No matches were found, no rows were altered."** No link contains that text. Check upper and lower case, and the `www.` part. - **"You can only exchange valid domain names or URLs."** Both fields need a domain with its extension, such as `.com`, optionally with the protocol and a path. ## Undoing an exchange You can run the tool again with the two domains swapped. This only gives back the original links if **none** of your links used the new domain before the first exchange: otherwise, those links change too. That is why the backup matters: it is the only sure way back. ## After the exchange - **Check the health of your links.** Their health scores are from the old domain. Run [Analyze link health](https://doothemes.com/docs/dbmovies/tools/analyze-link-health) to check them against the new one. - **Clear your cache.** If your site uses a page cache or a CDN, clear it so your visitors get the new links. # Subscriptions > Subscriptions give your members premium access, with plans charged automatically through PayPal or registered by hand. This page explains plans, how to set up PayPal, what members see, the Subscriptions screen and editor, cancellations and expiration, and the subscription emails. Source: https://doothemes.com/docs/dbmovies/modules/subscriptions --- ## Overview A subscription gives a member **premium access** for a period of time: the links marked as premium and anything your theme reserves for members. Subscriptions work in two ways: - **Automatic, with PayPal.** The member chooses a plan on your site and pays with PayPal, and PayPal charges them again every period. Dbmovies records each payment and keeps the subscription up to date on its own. - **Manual.** You create the subscription for a user and register their payment, for example after a bank transfer. ## Plans Dbmovies has four plans, set in **Dbmovies › Settings › Subscriptions**, section **Finance**: | Plan | Duration | |---|---| | **Monthly** | 1 month | | **Quarterly** | 3 months | | **Biannual** | 6 months | | **Annual** | 12 months | - **Turning plans on and off:** give a price to each plan you want to offer. A plan with price 0 is turned off. - **Title and description:** **Subscription Title** and **Subscription Details** present your membership on your site. - **Currency and taxes:** they are in the same section. See [Payments](https://doothemes.com/docs/dbmovies/modules/payments#currency-and-taxes). When a subscription is created, it keeps the name, price, currency and duration of its plan at that moment. Changing a price later does not change existing subscriptions: they keep the terms they were sold with. ![Dbmovies › Settings › Subscriptions › Finance, with the four plan prices and the currency options](https://cdn.wupdater.com/dbmovies/docs/364bba83be3307aa.webp) ## Setting up PayPal You need a PayPal business account and an app in the PayPal Developer Dashboard. Test with **Sandbox** first, then switch to **Live**. 1. In PayPal, go to **Developer Dashboard › Apps & Credentials** and create an app, or open yours. Copy its **Client ID** and **Secret**. 2. In WordPress, go to **Dbmovies › Settings › Subscriptions › Payments** and turn on **Enable PayPal**. 3. Choose the **Mode**: **Sandbox** for tests or **Live** for real charges. 4. Paste the **Client ID** and the **Secret**, and save. 5. Under **Automatic charges**, copy the webhook address and the list of events. 6. In your PayPal app, add a webhook with that address and check those events. PayPal gives you a **Webhook ID**. 7. Paste the **Webhook ID** in WordPress and save. 8. Click **Check connection** to confirm that the credentials work. Things to check: - **HTTPS.** Your site needs HTTPS: PayPal only sends its notifications (webhooks) to HTTPS addresses. - **Currency.** If PayPal does not accept the currency of your site, the settings warn you. - **Without the Webhook ID,** your site does not receive PayPal's notifications. ![Settings › Subscriptions › Payments, PayPal section, with Mode, Client ID, Secret, Webhook ID and the Automatic charges box with the webhook URL](https://cdn.wupdater.com/dbmovies/docs/ba71f8882edc93f8.webp) ## What your members see The theme shows the plans, the checkout and the membership area of the account. In [Wovie](https://doothemes.com/items/wovie): 1. **Subscribing.** The member chooses a plan and is sent to PayPal to approve the subscription. 2. **Access.** Back on your site, the access is turned on when PayPal confirms the first charge. That usually takes seconds, and the account shows it as processing in the meantime. A charge that PayPal holds for review also gives access while it is reviewed. 3. **Renewals.** PayPal charges every period on its own, and each charge extends the access. If a charge fails, PayPal tries again, and the member keeps access for a few extra days while it does. 4. **Cancelling the renewal.** The member can stop the automatic renewal from their account. They keep access until the end of the period they paid for. To subscribe again later, they start a new subscription. To change plans, the member cancels the renewal and subscribes to the new plan when the current one ends. ## The Subscriptions screen **Dbmovies › Subscriptions** lists every subscription: | Column | What it shows | |---|---| | **ID / Hash** | The number and unique hash of the subscription | | **Status** | Created, Pending, Active, Expired or Cancelled | | **User** | The member | | **Plan** | The plan. PayPal subscriptions also show **PayPal · Auto-renew** or **PayPal · Renewal off** below it | | **Price** | The price it was sold at | | **Revenue** and **Taxes** | What its completed payments add up to | | **Starts** and **Expires** | Its access dates | | **Note** | Your private note | | **Created** | When it was created | Search by login, email, name or hash, and filter by status and plan. The **Subscriptions** badge in the admin toolbar counts the pending ones. ![Dbmovies › Subscriptions, with the search, the status and plan filters, and a list where at least one subscription shows PayPal · Auto-renew under its plan](https://cdn.wupdater.com/dbmovies/docs/c2b3e45049859e46.webp) ### Statuses - **Created**: a new subscription that was not saved yet. The editor asks you to change it before saving. - **Pending**: waiting for payment or activation. - **Active**: paid and within its dates. The member has access. - **Expired**: its end date passed. - **Cancelled**: revoked before its end. Dbmovies checks twice a day for subscriptions whose end date passed and marks them as expired. ## Editing a subscription Click a subscription to open its panel: - **Customer**: the user, with a link to their profile. - **Plan snapshot**: the plan, price, currency and duration it was sold with. - **Subscription dates**: **Starts at**, **Expires at** and, if cancelled, **Cancelled at**. A bar shows the coverage at a glance. - **Quick actions**: add one full plan duration, or add or subtract 7, 30 or 90 days to **Expires at**. They only change the form: nothing is saved until you click **Save changes**. - **Payments history**: every payment of the subscription, with **Add payment** to register a new one right there. - **Accounting**: gross and net income, from its completed payments. - **Note**: a private note for your team. ### PayPal subscriptions A subscription paid with PayPal shows a **PayPal** block with: - its PayPal ID, linked to your PayPal panel; - the **PayPal status**, the **Next charge** and whether **Automatic renewal** is on; - the **Payer** and the **Last sync**. It also has two buttons: - **Sync with PayPal** reads the subscription from PayPal right away. - **Cancel renewal** stops the charges, as if the member did it: they keep access until the end of the paid period. PayPal sets the dates and payments of these subscriptions, so manual changes are overwritten on the next sync. Setting a PayPal subscription to **Cancelled** or **Expired** also cancels it in PayPal. Dbmovies also syncs PayPal subscriptions every hour, so they stay right even if a notification from PayPal gets lost. ![The edit panel of a PayPal subscription, with the PayPal block, the dates and the payments history](https://cdn.wupdater.com/dbmovies/docs/9b5826a6ff79b14d.webp) ## Manual subscriptions To give access to a member who paid another way: 1. Click **Add subscription**. 2. Search for the user and choose the plan. 3. Click **Create & continue**. 4. Register the payment with **Add payment**. When the payment is completed, the subscription is activated for the duration of its plan. To renew a manual subscription, register a new payment: its days are added to the current end date, so the member does not lose any. A subscription with payments cannot be deleted: delete its payments first in **Dbmovies › Payments**. ## Refunds and chargebacks - **A refund**, made in PayPal or marked here, takes back the days of that payment. If it was the only payment, the subscription goes back to pending. - **A chargeback** in PayPal cancels the subscription and ends the access. See [Payments](https://doothemes.com/docs/dbmovies/modules/payments#refunds-and-deleting-payments). ## Emails Dbmovies emails the member when: - their subscription becomes active; - it is about to expire; - they cancel the renewal; - it ends; - your site cancels it. Edit the subject and message of each one in **Dbmovies › Settings › Email › Subscriptions messages**. To make sure they arrive, set up SMTP: see [Initial settings](https://doothemes.com/docs/dbmovies/initial-settings#4-email-delivery-smtp). ## Members in the Users list **Users** shows the membership of each user: its status, plan, PayPal or manual, and when it renews or ends, plus the total they paid. # Sync List > Sync List shares the links of one Dbmovies site with your other Dbmovies sites: every link you add, edit or delete reaches them on its own. This page explains how it works, how to connect two sites, and how to follow and fix the synchronization. Source: https://doothemes.com/docs/dbmovies/settings/sync-list --- :::note Sync List is available from Dbmovies 1.3.37. Every site that sends or receives links needs that version or a newer one. ::: ## Overview If you run more than one site with Dbmovies, for example one in English and one in Spanish, Sync List keeps their links in step. You add a link on one site, and it appears on the others on the same movie or episode. Edit it or delete it, and the change reaches them too. Sync List is meant for **your own network** of sites: links that arrive are published as they come, with no review. ## How it works - **A site that sends** shares the links it publishes. Each new, edited or deleted link goes into a queue, and a background task sends the queue every minute, up to 100 links at a time. - **A site that receives** finds the same title by its **TMDb ID**: the movie, or the TV show with the season and episode number. Then it adds the link to that title, updates it or deletes it. - **Titles the receiving site does not have are skipped.** Sync List never imports titles. The skipped ones are listed in the activity log, so you can import them. - **Received links are never sent again.** Two sites can send their links to each other without any link going back and forth. Each link carries its address, type, language, quality, file size, password, subtitles, its premium mark and its status. Views, requests and reports stay on each site. ## Before you start - **Both sites run Dbmovies 1.3.37 or newer.** - **The sending site has an active license**, and its scheduled tasks run on time. The queue is a background task. See [Cron Jobs](https://doothemes.com/docs/dbmovies/tools/cron-jobs). - **The receiving site can be reached** from the sending one, and its REST API is not blocked by a firewall or a security plugin. - **The clocks of both servers are right.** Each request is valid for five minutes. ## 1. Set up the receiving site 1. On the site that will receive the links, go to **Dbmovies › Settings › Links › Sync list**. 2. Turn on **Receive links**. 3. Click **Get a key**. Copy the **Sync secret key** that appears. 4. Click **Save**. Keep the key private: it lets other sites publish links on this one. ## 2. Set up the sending site 1. On the site that will send its links, go to **Dbmovies › Settings › Links › Sync list**. 2. Turn on **Send links**. 3. In **Websites**, click **Add website** and fill in: - **Site URL**: the address of the receiving site, such as `https://es.yoursite.com`; - **Sync secret key**: the key you copied from it; - **Link types**: which links it receives: **Embed Link**, **Download** and **MP4 Link** (all by default); - **Premium links**: whether it also receives the links that are only for premium members (on by default). 4. Click **Save**. 5. Click **Test connection**. Each website shows **Connected** with its name and version, or the reason it failed. 6. Click **Send all links** to send the links you already have. This step is only needed once per website: from then on, every change is sent on its own. Add one website for each site that should receive the links of this one. [SCREENSHOT_HERE: Dbmovies › Settings › Links › Sync list on the sending site, with Send links on, a website and the Test connection, Send all links and Retry failed buttons] ## What is sent and when Changes are sent on their own, about a minute after they happen: - adding, editing or deleting a link, from the editor or from **Dbmovies › Links**; - importing links from a spreadsheet; - deleting a movie or an episode, which deletes its links on the receiving sites too; - replacing a domain with [Sources domain exchanger](https://doothemes.com/docs/dbmovies/tools/sources-domain-exchanger). Only links of published movies and episodes are sent. A link that stops meeting what a website receives, for example because it became premium and that website does not receive premium links, is deleted on that website. To send the links of one title right away, open it in the editor and click **Send links to sync list** in its **Links** box. The button only appears when **Send links** is on. :::note Resetting the links with the [Restorer](https://doothemes.com/docs/dbmovies/tools/restorer) does not notify the receiving sites. If you reset the links of a sending site, reset them on the receiving sites too. ::: ## On the receiving site Received links work like any other link: your visitors see them in the list of links of the title. - **In Dbmovies › Links**, the **User** column shows where each received link came from, such as **From en.yoursite.com**. Use the **All origins** filter to see only the links of this site or only the received ones. - **Changes come from the sending site.** If you edit a received link here, the next change on the sending site overwrites it. To change it for good, change it on the sending site. [SCREENSHOT_HERE: Dbmovies › Links on the receiving site, filtered by Received (Sync List), with From en.yoursite.com in the User column] ## Sending in both directions A site can send and receive at the same time. To keep two sites in step both ways: - set up each one as a receiving site, with its own key; - add each one to the **Websites** of the other. Received links are never sent again, so each link stays with the site that created it. ## Activity and problems The **Activity** section of **Sync list** shows the queue and the last events: - **Queue**: the links waiting to be sent, and the ones that failed. - **To** a website: what that website did with a batch. It lists links created, updated and deleted, titles not found, and errors. - **From** a website: what this site did with the links it received. **Tools › Site Health › Dbmovies** also shows whether this site sends and receives, and the state of its queue. [SCREENSHOT_HERE: The Activity section of Sync list, with the queue and a few sent and received events] If a website does not answer, its links stay in the queue and are retried, waiting longer each time, up to twelve hours. After eight attempts they are marked as failed. When the problem is fixed, click **Retry failed**. | Message | What to do | |---|---| | **The sync secret key does not match.** | Copy the key of the receiving site again into **Websites**. If the key was changed there, every sending site needs the new one. | | **The request expired.** | The clock of one of the servers is wrong. Ask your hosting provider to sync it. | | **This site does not receive links.** | Turn on **Receive links** on the receiving site, and check it has a key. | | **The site answered with HTTP …** or a timeout | The receiving site is down, or a firewall or security plugin blocks its REST API. Allow requests to `/?rest_route=/dbmovies/v1/sync/`. | | **Titles not found** | The receiving site does not have those titles. Import them there, then click **Send all links** on the sending site. | ## Security - Every batch is signed with the key of the receiving site. The key itself never travels, and a signature older than five minutes is rejected. - Each receiving site accepts up to 120 batches per minute from the same site. - To stop a site from sending to this one, click **Change key** in **Sync list** and save. Give the new key only to the sites you trust. # Tags > Tags are the standard WordPress tags, used on movies and TV shows to add keywords from TMDb. This page explains how they are imported and how to limit them. Source: https://doothemes.com/docs/dbmovies/taxonomies/tags --- ## Overview Movies and TV shows use the standard WordPress tags, the same ones as your posts. Dbmovies fills them with the keywords of each title on TMDb, such as "time travel" or "based on a novel", so your visitors can find related titles. ## How tags are imported When you import a title, Dbmovies adds its TMDb keywords as tags, if **Tags** is checked in **Dbmovies › Settings › Data Importer › Initial settings › Taxonomies**. - **How many:** set in **Dbmovies › Settings › Data Importer › Import Limits › Tag Taxonomy** (5 by default). The first keywords of TMDb are taken. - **Reused:** a tag that already exists on your site, even from your posts, is reused. To stop importing keywords, uncheck **Tags**. Titles you already imported keep their tags. ![Dbmovies › Settings › Data Importer › Initial settings, Taxonomies option, and Import Limits › Tag Taxonomy](https://cdn.wupdater.com/dbmovies/docs/291966b93cef0cc0.webp) ## Managing tags Manage tags as usual in WordPress: rename them, merge them or delete the ones you do not need. Tags have no address setting in Dbmovies: they use the tag base of **Settings › Permalinks**. # Titles and content > Titles and content sets how the title, the address and the content of each imported movie, TV show and episode are written, with templates and markers. This page lists every marker and explains what happens to the titles you already have. Source: https://doothemes.com/docs/dbmovies/settings/titles-and-content --- ## Overview When you import a title, Dbmovies writes its **title**, its **permalink** (the last part of its address) and its **content** from templates. You set them in **Dbmovies › Settings › Data Importer › Titles / Content**, with markers in braces, such as `{title}`, that are replaced with the data of each title. There is one template of each kind for **Movies**, **TV Shows** and **Episodes**. ## Default templates | | Title | Permalink | Content | |---|---|---|---| | **Movies** | `{title}` | `{post_id}-{title}` | `{overview}` | | **TV Shows** | `{title}` | `{post_id}-{title}` | `{overview}` | | **Episodes** | `{tvshow_title}: {season}x{episode}` | `{post_id}-{tvshow_title}-se-{season}-ep-{episode}` | `{overview}` | For example, the movie *Fight Club* gets the title **Fight Club** and an address such as `yoursite.com/movies/1234-fight-club`. An episode gets a title such as **Breaking Bad: 1x1**. ![Dbmovies › Settings › Data Importer › Titles / Content, with the title and permalink templates](https://cdn.wupdater.com/dbmovies/docs/7892e722aec26f46.webp) ![Dbmovies › Settings › Data Importer › Titles / Content, with the title and permalink templates](https://cdn.wupdater.com/dbmovies/docs/ad00107e39777724.webp) ## Markers Every marker of a type works in its three templates: title, permalink and content. | Marker | Movies | TV Shows | Episodes | What it gives | |---|---|---|---|---| | `{title}` | Yes | Yes | | The title, in your import language | | `{original_title}` | Yes | Yes | | The original title | | `{year}` | Yes | Yes | | The release year | | `{overview}` | Yes | Yes | Yes | The synopsis | | `{post_id}` | Yes | Yes | Yes | The ID of the title on your site | | `{tmdb_id}` | Yes | Yes | Yes | The ID on TMDb | | `{imdb_id}` | Yes | Yes | | The ID on IMDb, such as `tt0137523` | | `{tvshow_title}` | | | Yes | The title of the TV show | | `{season}` | | | Yes | The season number | | `{episode}` | | | Yes | The episode number | | `{episode_name}` | | | Yes | The name of the episode | ## Title The title template is plain text: HTML is removed. A common change is adding the year, as `{title} ({year})`. If TMDb has no release date for a title, `{year}` is empty and a template like `{title} ({year})` gives a title ending in `()`. Upcoming titles are the usual case. ## Permalink The permalink template builds the last part of the address. Use letters, numbers and hyphens: spaces become hyphens, and WordPress removes accents and special characters from the result. - **Keep `{post_id}` in it.** It makes every address unique: two movies called *Halloween* get different addresses instead of `halloween` and `halloween-2`. - **Decide it before you import.** Changing an address later breaks the links that point to the old one, including the ones search engines already know. The first part of the address, such as `movies` in `/movies/1234-fight-club`, is set in **Settings › Permalinks**. See [Initial settings](https://doothemes.com/docs/dbmovies/initial-settings#2-permalinks). ## Content The content template is what appears in the editor of each title, usually the synopsis. You can add text and simple HTML, such as `` or links. Each line of the template becomes a paragraph of the block editor. Write one paragraph per line, and keep the formatting inside the lines: headings and lists would end up inside a paragraph. ```text {overview} Original title: {original_title} ``` ![The content template of Movies, with {overview} and a second line with the original title](https://cdn.wupdater.com/dbmovies/docs/8a6e34f9255b22ff.webp) ## Titles you already have The templates are applied when you import a title. When a title is updated, they are applied again if **Structural Capabilities** allows it, in **Dbmovies › Settings › Data Importer › Meta Updater**: - **Update Custom Titles** rewrites the title. - **Update Custom Permalinks** rewrites the permalink. - **Update Custom Content** rewrites the content. All three are checked by default, so a new template reaches your whole catalog as titles are updated. :::note With these options checked, every update overwrites the title, permalink and content. Changes you make by hand are lost, and a new permalink changes the address of the title. On a published site, we recommend unchecking **Update Custom Permalinks**, and also the others if you edit titles or synopses by hand. See [Metaupdater](https://doothemes.com/docs/dbmovies/tools/metaupdater#title-slug-and-content). ::: # TVShows > TV Shows is the content type for the series on your site. This page explains how a series, its seasons and its episodes fit together, how episodes are imported, and what each part of the editor and the list does. Source: https://doothemes.com/docs/dbmovies/post-types/tvshows --- ## Overview A TV show is the main record of a series. Unlike a movie, it is not a single piece of content: it sits at the top of a structure with its seasons and its episodes. - **The TV show** is the parent record. It holds the general information: name, poster, synopsis, cast, images, status and the list of its seasons. - **The seasons** are stored inside the TV show. They are not separate content. - **The episodes** are separate content, and each one is linked to its TV show. You can create TV shows in two ways: - **By importing them from TMDb.** This fills in the general information and the list of seasons. Use the importer in the **Dbmovies** menu (the **Shows** tab), or **Quick import** from the TV shows list. See [Importers](https://doothemes.com/docs/dbmovies/modules/importers). - **By hand**, with the add button at the top of the **TV Shows** list. You find **TV Shows** in your admin sidebar. The episodes list, **TV Episodes**, is in the same menu. ## The TV shows list Besides the title and the date, the list has its own columns: | Column | What it shows | |---|---| | **Ratings** | The rating of your visitors and its number of votes | | **View count** | How many times the TV show was viewed | | **Badges** | The quality and language badges | | **Seasons** | The episodes of the TV show: a button to import them, and their state in the Automatic episodes queue | | **Meta Updater** | An **Update** button that refreshes the TV show from TMDb and IMDb right away | | **Featured Content** | **Add** or **Remove** the TV show from your featured content | **Quick import**, next to the add button at the top of the list, opens a field where you paste a TMDb or IMDb link or ID, for example `https://www.themoviedb.org/tv/1399` or `tt0944947`. Dbmovies imports the TV show and opens it in the editor. ### Quick Edit Hover a TV show in the list and click **Quick Edit** to change it without opening the editor. Besides the WordPress fields, such as the title, the slug, the date and the status, you can change: - its badges, in **Quality** and **Language**, which open with its current badges. The options come from your lists in [Custom badges](https://doothemes.com/docs/dbmovies/settings/custom-badges#quick-edit); - its **Genres**, **Releases** and **Countries**, and its **Tags**. The cast and crew are not in Quick Edit: edit them in the **Persons** field of the editor, so the credits and the person pages stay in sync. To add genres, release years, countries or tags to several TV shows at once, select them and choose **Edit** in **Bulk actions**. Badges are changed one TV show at a time. ![Quick Edit of a TV show in the list, with the Quality and Language selectors and the Genres, Releases and Countries lists](https://cdn.wupdater.com/dbmovies/docs/53102c912991e5fe.webp) ### The Seasons column The button of the **Seasons** column says **Import** while the TV show has no imported seasons, and **Imported (N)** once N seasons were imported. Click it to open the seasons manager (see [Import episodes by hand](#import-episodes-by-hand)). Below the button, a line shows the state of the TV show in the Automatic episodes queue: - **Episodes queued**: it is waiting for its turn. - **Importing episodes · S2**: its episodes are being created, here season 2. - **Episodes failed**: something went wrong. Hover over it to see the error. - **Skipped · 240 episodes**: it has more episodes than the limit you set, so the queue left it out. You can still import its episodes with the button. When the queue finishes a TV show, the line disappears. ![V Shows list with the Seasons column, showing a TV show with Imported (5), one with Episodes queued and one with Importing episodes · S2](https://cdn.wupdater.com/dbmovies/docs/f299341d0dfab9c7.webp) ## Permalinks Every TV show and every episode has its own address. You choose the words in **Settings › Permalinks**, in the **Dbmovies: Post Type** section: - **Type: TVShows**, by default `tvshows`. - **Type: Episodes**, by default `episodes`. With the default values, the addresses look like this: ```permalink https://your-website.com/tvshows/ahsoka/ https://your-website.com/episodes/ahsoka-season-1-episode-1/ ``` The episode name in the address follows the title pattern of your import settings. See [Titles and content](https://doothemes.com/docs/dbmovies/settings/titles-and-content). Dbmovies also adds addresses for a season or an episode inside the TV show. Your theme can use them to open the TV show at that season or episode: ```permalink https://your-website.com/tvshows/ahsoka/season1/ https://your-website.com/tvshows/ahsoka/season1/episode1/ ``` If you leave a field empty, Dbmovies uses the default. Dbmovies refreshes your site addresses on its own when you save. :::info Changing a word changes the address of every TV show or episode you already published. Choose them before you open your site. ::: ## Editing a TV show The TV show editor has the standard WordPress fields and two Dbmovies boxes: **Metadata** and **Advanced**. TV shows have no **Sources** box: the links go in each episode. ### Standard WordPress fields - **Title**: the name of the series on your site. - **Editor**: the synopsis or description. - **Featured image**: the poster. - **Comments**: turn comments on or off for this TV show. - **Author**: the user who published it. Episodes created by the Automatic episodes queue take the same author. ### Classifications TV shows use the same classifications as movies, so your catalog stays consistent: **Genres**, **Releases** (the first air year), **Countries**, **Persons** (creators and cast) and **Tags**. ### Metadata The **Metadata** box holds the details of the series, in tabs: - **Main data**: **Status**, series name, original name, tagline, poster path, first and last air dates, runtime, and the number of seasons and episodes. - **Identifiers**: the TMDb ID, the IMDb ID and the YouTube ID of the trailer. - **External Metric**: the age rating (**Rated**, for example TV-14 or TV-MA), and the rating and votes of TMDb and IMDb. - **Persons**: the creators and the cast, with the character each actor plays. When you import a TV show, the cast is the main cast of all its seasons, ordered by the number of episodes each actor appears in. - **Images**: the main logo and backdrop, plus more logos and backdrops. - **Seasons**: the list of seasons, explained below. The **Status** can be **Returning Series**, **Planned**, **In Production**, **Ended**, **Canceled**, **Pilot** or **Unknown status**, so your site can show whether a series is still on the air. ### Advanced The **Advanced** box works as in [movies](https://doothemes.com/docs/dbmovies/post-types/movies#advanced): badges, featured content, adult content, collections and platforms. On a TV show, the **Auto-Embed** switch leaves out the TV show and all its episodes. ## How seasons and episodes fit together A series has three levels: the TV show, its seasons and its episodes. ### Seasons live inside the TV show The seasons are part of the TV show record. In the **Seasons** tab of the Metadata box, each season has: - **Season Name** - **Poster Path** - **Overview**: a short summary of the season. - **Season Number**: it sets the order of the seasons. - **Episodes count**: how many episodes the season has. - **Air Date**: when the season started. When you import a TV show from TMDb, this list is filled in for you. To add a season by hand, click **New season** below the list. ![The Seasons tab of a TV show, with two or three seasons listed](https://cdn.wupdater.com/dbmovies/docs/299b0d5928dfd656.webp) ### Episodes are linked to the TV show Episodes are separate content. In the **Main data** tab of an episode: - **TV Show**: the series the episode belongs to. Start typing its name and choose it from the list. - **Season Number** and **Episode Number**: its place in the series. With these three fields, the episode is connected and ordered inside its TV show. Each episode also has a TMDb ID, a quality badge, its name, air date, runtime, images and links. See [Episodes](https://doothemes.com/docs/dbmovies/post-types/episodes). ## Importing the episodes You can bring in the episodes of a TV show in two ways. ### Automatic episodes With **Automatic episodes** on, every TV show you import joins a queue, and its aired episodes are created in the background, one season at a time. You do not need to open anything: you import the TV show and the episodes arrive on their own. - **Turn it on** in **Dbmovies › Settings › Data Importer › Automatic episodes**. There you also choose the season order, the latest seasons only, and a limit of episodes per TV show. - **Follow it** in the importer: open the menu next to **Meta updater** and choose **Automatic episodes**. The panel shows the TV shows in the queue, the season in progress and how many episodes were created, and refreshes on its own. - **Add your existing TV shows** to the queue with **Queue TV shows with missing episodes**, in the same panel. The queue only creates episodes. Episodes that already exist are skipped and not changed, and episodes that have not aired yet are not created. It uses one TMDb request per season, and it needs your scheduled tasks to run: see [Cron Jobs](https://doothemes.com/docs/dbmovies/tools/cron-jobs). ![The Automatic episodes panel in the importer, with the counters and the list of TV shows in the queue](https://cdn.wupdater.com/dbmovies/docs/c7095082b6ed817c.webp) ### Import episodes by hand Click the button of the **Seasons** column in the TV shows list to open the seasons manager. It lists the seasons of the TV show from TMDb: - Import the episodes of one season at a time. - Or click **Start bulk import** to import every season in a row. Here, an episode that already exists is updated with the data from TMDb instead of being created again. ![The seasons manager of a TV show, with its seasons listed and the Start bulk import button](https://cdn.wupdater.com/dbmovies/docs/25e2748d9537f172.webp) ### What Dbmovies does with each episode Either way, Dbmovies: - links every episode to its TV show; - sets its season and episode numbers; - builds its title and address from the pattern in your [Titles and content](https://doothemes.com/docs/dbmovies/settings/titles-and-content) settings, so all your episodes follow the same style; - never creates the same episode twice. ## Keeping a TV show up to date - **One TV show**: click **Update** in the **Meta Updater** column of the list. - **Your whole catalog**: turn on the automatic [Meta Updater](https://doothemes.com/docs/dbmovies/tools/metaupdater). - **New episodes of a series on the air**: add it to the Automatic episodes queue again with **Queue TV shows with missing episodes**, or import its latest season from the seasons manager. # Updates > Dbmovies › Updates is the license and update center for every Doothemes product on your site: Dbmovies and your Doothemes theme. This page explains the product list, license statuses, daily limits and how they are shared, how updates arrive, and local sites. Source: https://doothemes.com/docs/dbmovies/modules/updates --- ## Overview **Dbmovies › Updates** is the center for the licenses and updates of every Doothemes product installed on your site: - the **Dbmovies** plugin; - your Doothemes theme, such as **Wovie**; - any Doothemes add-on. Each product has its own row, its own license key and its own status. Dbmovies is the only part of your site that talks to the Doothemes server, so your theme and add-ons are managed from here too. To activate, move or remove a license, see [License activation](https://doothemes.com/docs/dbmovies/license-activation). ![Dbmovies › Updates with the Dbmovies and Wovie rows, their icons, versions, keys and status](https://cdn.wupdater.com/dbmovies/docs/b5d206b89be0cc78.webp) ## The product list Each row shows the icon and name of the product, its type (plugin or theme), the installed version, the license key partly hidden, and its status. The header shows how many of your products are active. Click a row, or **Manage**, to open its panel. ## Statuses - **Active**: the license is valid on this site. The product receives updates and its licensed features are unlocked. - **Inactive**: no license is connected, or it was deactivated or expired. Dbmovies keeps your content working, but importing, the background tasks, IMDb data, updates and saving the plugin settings need an active license. ## Keeping licenses in sync Dbmovies checks your active licenses with the server every hour, so a renewal, an upgrade or an expiration shows up on its own. You can change how often it checks in **Dbmovies › Tools › Cron Jobs** (task **Auth Client Check**). To check a license right away, open its panel and click **Check now**. The panel shows: - **Sites**: the activations in use, out of the ones your plan allows. - **Requests today**: the requests used today, out of your daily limit. - **Expires**: when the license ends, or **Never** for a lifetime license. If the server cannot be reached during a check, nothing changes on your site: a temporary problem never deactivates your license. ![The panel of an active license, with Sites, Requests today and Expires, and the Check now button](https://cdn.wupdater.com/dbmovies/docs/dce9f74e579d6d94.webp) ## Daily limits Each license has two separate limits: - **Sites**: how many sites the license can be active on at the same time. It belongs to each license and is never shared. - **Requests today**: how many requests the license can make to the Doothemes server per day. It resets every day. These count toward **Requests today**: - **IMDb data**: one request each time a movie or TV show gets its IMDb ratings, on import or when the Meta Updater refreshes it. Episodes do not use IMDb requests. - **License checks**: the hourly check and each **Check now**. - **The TMDb proxy**, if you turn it on. Requests to TMDb with your own API key do not count. When a license reaches its limit, the features that use the server stop making requests until the next day. Nothing breaks, and the data you already have stays in place. ## Sharing requests across licenses When you have more than one active license on your site, for example Dbmovies and Wovie, their daily requests back each other up for IMDb data: when one license reaches its limit, the next one takes over. - Only **active** licenses take part. Activate your theme license to add its requests. - Each license keeps its own count. When one runs out, the next one is used. - The **Sites** limit is never shared. ## How updates arrive With an active license, Dbmovies and your Doothemes theme update like any other plugin or theme: - New versions appear in **Dashboard › Updates** and in the plugins or themes list. - Click **View details** to read what changed before you update. - You can also turn on automatic updates for them, as for any plugin or theme. To update by hand, download the latest version from your [Doothemes account](https://doothemes.com/account/downloads) and upload it. See [Installation](https://doothemes.com/docs/dbmovies/installation#updating). ## Local sites Local sites do not use an activation. This applies to `localhost`, to domains that end in `.local`, `.test` or `.localhost`, and to private network addresses. You can activate your license on your local copy as many times as you need. A staging or test site on a public domain, such as `staging.your-website.com`, uses an activation like any other site. # User ratings > User ratings let your visitors rate movies, TV shows and collections from 1 to 10. This page explains who can vote, how the rating of each title is calculated with the IMDb and TMDb ratings, and where ratings appear. Source: https://doothemes.com/docs/dbmovies/modules/user-ratings --- ## Overview Your visitors can rate your titles from **1 to 10**. Each title shows the average rating and its number of votes, and your theme can use them to sort titles and show top-rated lists. Ratings work on movies, TV shows and collections. Your theme shows the rating widget on the pages where you want visitors to vote. ## Who can vote - **Members** with an account. They vote once per title and can change their vote at any time. They can also remove it from their account. - **Visitors without an account.** Dbmovies recognizes them with a cookie for 30 days, so they also vote once per title and can change their vote during that time. ## How the rating is calculated The rating of a title is the average of all its votes, with one decimal. When you import a title, its **IMDb rating** and its **TMDb rating** are added as one vote each. So: - a title you just imported already has a rating (the average of its IMDb and TMDb ratings) and 2 votes; - each visitor vote is added to that average. When the [Meta Updater](https://doothemes.com/docs/dbmovies/tools/metaupdater) refreshes a title, it updates its IMDb and TMDb ratings, and the average with them. Visitor votes are kept. For example, a movie with IMDb 8.0 and TMDb 7.6 starts at 7.8 with 2 votes. If a visitor rates it 10, it moves to 8.5 with 3 votes. ## Members' ratings in their account Members find all the titles they rated in their account. In [Wovie](https://doothemes.com/items/wovie), it is **Account › Ratings**, with: - their number of ratings and their average; - their latest ratings and their top ratings; - the full list, sorted by date or score and filtered by movies or TV shows. From there they can remove a rating. ![Account › Ratings in Wovie, with the summary and the list of rated titles](https://cdn.wupdater.com/dbmovies/docs/f3e3bc95149cadf2.webp) ## Ratings in the admin The **Ratings** column of the Movies, TV Shows and Collections lists shows the rating and the votes of each title, and you can sort by it. See [Movies](https://doothemes.com/docs/dbmovies/post-types/movies#the-movies-list). Collections can also list their titles by rating. See [Collections](https://doothemes.com/docs/dbmovies/post-types/collections). [SCREENSHOT_HERE: The Movies list sorted by the Ratings column, showing ratings and votes] ## Security Each vote carries a security token of its page, so votes cannot be sent from outside your site, and only scores from 1 to 10 are accepted. A member can only change or remove their own votes. # User requests > User requests let your visitors ask for the movies and TV shows they miss on your site. This page explains what members see, the request rules, and how to review and import requests from the admin. Source: https://doothemes.com/docs/dbmovies/modules/user-requests --- ## Overview User requests let your members ask for titles that are not on your site yet. They search TMDb from their account and send a request; you review the requests in **Dbmovies › Requests** and import them with one click. Members see the status of each request in their account. It is a simple way to learn what your audience wants to watch and to grow your catalog with it. ## What your members see The requests area is part of the account of each member. In [Wovie](https://doothemes.com/items/wovie), it is **Account › Requests**. 1. The member searches TMDb for a movie or a TV show. 2. They pick a title from the results and send the request. 3. Their list of requests shows the status of each one, which changes as you work on it. The rules: - **Members only.** Visitors need an account to request titles. - **Only titles you do not have.** A title already published on your site cannot be requested. - **No repeated requests.** A member cannot request the same title twice while their request is pending, in progress or published. - **Up to 10 pending requests** per member at a time. When you publish or decline some, they can request more. - **Cancelling.** A member can cancel a request while it is still **Pending**. ## The Requests screen **Dbmovies › Requests** lists every request, with the member, the title, its type (movie or TV show) and its status. The number next to **Requests** in the admin menu counts the pending ones. Search by user, title or hash, and filter by status and type. ![Dbmovies › Requests, with the filters and a list of requests with their status selector and the Import button](https://cdn.wupdater.com/dbmovies/docs/1e71763c7c483324.webp) ## Statuses | Status | Meaning | |---|---| | **Pending** | New, waiting for your review | | **In progress** | You are working on it | | **Published** | The title is on your site | | **Declined** | You will not add it | Change the status of a request from the selector on its row. The member sees the new status in their account. ## Importing a request Click **Import** on a request. Dbmovies imports the title from TMDb with the same importer as the **Dbmovies** menu and marks the request as **Published**. If the title was already on your site, the request is marked as **Published** too. Importing needs the same as the importer: an active license and your TMDb API key. See [Importers](https://doothemes.com/docs/dbmovies/modules/importers). ![A request being imported, with the Importing… state on its row](https://cdn.wupdater.com/dbmovies/docs/e932d08f3fbad80b.webp) ## Deleting a request **Delete** removes a request for good, and it disappears from the account of the member. To keep a record, set it to **Declined** instead. # View counter > The view counter counts how many times your movies, TV shows, episodes and collections are viewed, and keeps a 24-hour log for trending lists. This page explains what counts as a view, where views appear, and how page caching affects them. Source: https://doothemes.com/docs/dbmovies/modules/view-counter --- ## Overview Dbmovies counts the views of your titles, so you and your visitors can see what is popular: - the **total views** of each movie, TV show, collection and episode; - the **trending** titles of the last 24 hours, for lists such as "Most viewed". It works on its own: there is nothing to set up. ## What counts as a view | Content | When a view is counted | |---|---| | **Movies**, **TV shows** and **collections** | Each time their page is loaded | | **Episodes** | Each time a visitor opens the links of the episode | Each page load counts, reloads included. Links have their own counter: the **Requests** column of **Dbmovies › Links** counts how many times each link was opened. See [Link sources](https://doothemes.com/docs/dbmovies/modules/link-sources). ## Trending in the last 24 hours Each view of a movie or TV show is also written to a short log. Your theme uses it to show the most viewed titles of the last 24 hours, overall or only movies or TV shows. In [Wovie](https://doothemes.com/items/wovie), it feeds the "Most viewed" rankings of the home page. A scheduled task cleans the log every hour and keeps only the last 24 hours, so it stays small even on busy sites. You can see it in **Dbmovies › Tools › Cron Jobs**. ## Where views appear - **In the admin:** the **View count** column of the Movies, TV Shows, Episodes and Collections lists. You can sort by it. See [Movies](https://doothemes.com/docs/dbmovies/post-types/movies#the-movies-list). - **On your site:** your theme can show the views of each title and use them to sort lists. ![The Movies list sorted by the View count column](https://cdn.wupdater.com/dbmovies/docs/6efe35f084c8dbcf.webp) ## Page caching If your site uses full-page caching, such as WP Rocket, LiteSpeed Cache or Cloudflare APO, pages served from the cache do not reach WordPress, so those visits are not counted. Totals then show the visits that reached your server, not all of them. Episode views are not affected, because they are counted when the visitor opens the links, which is never served from the page cache. # Web App > Web App lets your visitors install your site as an app on their phone or computer, with its own icon, name and colors. This page explains what it needs, each setting, and how visitors install it. Source: https://doothemes.com/docs/dbmovies/settings/web-app --- ## Overview With **Web App**, your visitors can install your site like an app: it gets an icon on their home screen or desktop, opens in its own window without the browser bar, and shows your name and colors while it loads. Dbmovies publishes the **manifest** of your web app at `/wp-json/dbmovies/v1/manifest`, and adds the tags that browsers need to every page of your site. You set everything in **Dbmovies › Settings › PWA**. ## What it needs For browsers to offer the installation, your site needs: - **HTTPS.** - **An App Name.** The site name is used by default. - **Icons of 192×192 and 512×512 pixels**, in PNG. Without them, browsers do not offer to install your site. The installed app opens your site as it is online: it does not work without a connection. ## App details | Setting | What it does | Default | |---|---|---| | **Unique ID** | Identifies your app on the visitor's device. Do not change it once visitors installed it, or they will see it as a different app | `/?pwa=dbmovies` | | **App Name** | The full name, shown when installing and on the splash screen | The site name | | **App Short Name** | The name under the icon, where space is short. Keep it under 12 characters | The site name | | **App Description** | A short description, shown by some app stores and browsers | The site tagline | | **Categories** | What kind of app it is, for stores that list web apps | Entertainment | | **Start URL** | The page the app opens with | `/`, your home page | | **Scope** | The part of your site that opens inside the app. Links outside it open in the browser | `/`, your whole site | ![Dbmovies › Settings › PWA, with App Name, App Short Name, App Description and Categories](https://cdn.wupdater.com/dbmovies/docs/1403dbea09642e48.webp) ## Icons Add icons in **App Icons** with **Add Icon**. For each one, upload the image and set: - **Sizes**: its size in pixels. The image must have exactly that size. - **Type**: its format, usually **image/png**. - **Purpose**: **Any** for a normal icon, **Maskable** for one that the system can crop into a circle or a rounded square, **Monochrome** for a single-color icon. We recommend these icons: | Size | Purpose | Used for | |---|---|---| | 192×192 | Any | Android and the installation prompt | | 512×512 | Any | The splash screen and stores | | 512×512 | Maskable | Android home screens that crop icons | For a maskable icon, keep the logo inside the central 80% of the image, with a solid background: the edges can be cropped. The icons are also used on iPhone and iPad, for the home screen. ## Appearance | Setting | What it does | Default | |---|---|---| | **Background Color** | The background of the splash screen while the app loads | White | | **Theme Color** | The color of the title bar and the phone's status bar | Black | | **Display Mode** | **Standalone**: its own window, without the browser bar. **Fullscreen**: the whole screen. **Minimal UI**: a small browser bar. **Browser**: a normal browser tab | Standalone | | **Orientation** | **Any**, **Natural**, **Landscape** or **Portrait** | Portrait | | **Text Direction** | **LTR**, **RTL** or **Auto** | LTR | | **Primary Language** | The language of your app, as a language tag such as `en-US` or `es-MX` | `en-US` | - **Colors**: use the colors of your theme, so the splash screen and the bars match your site. With a dark theme such as Wovie, a dark background and theme color look best. - **Orientation**: on a movie site, we recommend **Any**, so the app turns when your visitors rotate their phone to watch. ![Dbmovies › Settings › PWA, with App Icons, the colors, Display Mode and Orientation](https://cdn.wupdater.com/dbmovies/docs/3fb9c71d26d55b6f.webp) ## How visitors install it - **Android (Chrome)**: the browser shows **Install app**, or it is in the menu: **Install app** or **Add to Home screen**. - **Computer (Chrome, Edge)**: an install icon appears at the right of the address bar. - **iPhone and iPad (Safari)**: tap **Share**, then **Add to Home Screen**. ## Check your web app 1. Open your manifest at `https://your-website.com/wp-json/dbmovies/v1/manifest` and check the name, the colors and the icons. 2. In Chrome on a computer, open your site, press **F12** and go to **Application › Manifest**. It shows the manifest as the browser reads it, with its icons and any problem that stops the installation. If you use a page cache or a CDN, clear it after changing these settings. # Wovie Source: https://doothemes.com/docs/wovie --- # Wovie > A fast, mobile-ready theme for movie and TV websites built with Dbmovies. Source: https://doothemes.com/items/wovie - Type: Theme - Version: 1.2.31 (released Oct 22, 2026) - Requires: [Dbmovies](https://doothemes.com/items/dbmovies) - Demo: https://demo.wovie.co - Documentation: https://doothemes.com/docs/wovie - WordPress: 7.0 or later (tested up to 7.1.3) - Dbmovies: 1.3.30 or later - PHP: 8.1 or later - Languages: English, Spanish - Layout: Responsive, dark ## 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 a WordPress theme for movie and TV websites built with Dbmovies. Dbmovies imports and manages the catalog: titles, seasons, episodes, people and links. Wovie turns it into a fast, app-like site that visitors can browse on any screen. Visitors find titles with instant and voice search, filtered archives and home page rows. Every movie, TV show and person gets a full page. Signed-in users get their own account area with a watch list, ratings, title requests and, if you sell memberships, their plan and billing. Wovie works with the content Dbmovies imports, with no page builder or custom design work. It is dark, responsive and translation-ready, with English and Spanish included. > Wovie does not include, host or stream any video. You add your own video sources and you are responsible for having the rights to publish them. ## Features #### Browsing and discovery - Home page with a featured carousel, genre shortcuts, Most viewed today, Recently viewed, latest episodes and rows of movies and TV shows. - Instant search as you type, a search results page with filters, and voice search in supported browsers. - Movie and TV archives with genre tabs and country, year and sort filters. Change pages with buttons, a swipe or the arrow keys. - Collection pages, and person pages with biography, Known for and a full filmography. #### Title pages - Movie and TV show pages with backdrop, poster, tagline, rating, genres and cast. - Trailer, a details panel with IMDb and TMDb ratings, sharing and an add-to-list button. - Season and episode browser. Each episode opens a panel with its sources and lets you move to the previous or next episode. - Sources panel with Watch and Download lists. Videos play inside the page: full width on desktop and inside the panel on phones. Downloads show quality, size and password. - Auto-Embed sources from Dbmovies on movie and episode pages. #### Accounts and memberships - Sign up and sign in with email, or with Google when it is enabled in Dbmovies. Visitors return to the page they came from. - Account area with overview, My list, ratings, title requests, membership and settings: profile, email, phone, password and active sessions. - Paid memberships with PayPal through Dbmovies: plans, automatic renewal, renewal cancellation, payment method and billing history. Premium sources are reserved for subscribers. #### Community - Threaded comments with replies, likes and dislikes, spoiler tags, formatting and emojis. - User ratings from 1 to 10 on every title. #### Design and performance - Dark design built for phones first, with bottom sheets, swipe gestures and touch-sized controls. - Pages show content as soon as they arrive. Every image has a loading background, and the poster appears instantly when a title is opened from a list. - One minified script and stylesheet, no jQuery, and lazy-loaded images. - Keyboard and screen reader friendly controls that respect reduced motion settings. - WordPress menus for the header (with dropdowns) and the footer (columns, social links and bottom links), plus custom logos. - Ad placements from the Dbmovies ads system. - Structured data for movies, TV shows and people. It steps aside when Yoast, Rank Math, SEOPress, All in One SEO, The SEO Framework or Slim SEO is active. - Translation-ready, with English and Spanish included. ## Requirements - WordPress 7.0 or later. - PHP 8.1 or later. - Dbmovies 1.3.30 or later, active and licensed. The latest version is recommended. - For paid memberships: a PayPal account set up in Dbmovies. - A current version of Chrome, Safari, Firefox or Edge. Recommended: pretty permalinks, and a CDN and object cache for high-traffic sites. ## Changelog ### 1.2.31 — October 22, 2026 - Faster pages on phones: loading backgrounds and placeholders no longer animate, so the browser stops redrawing them. - The theme starts without waiting for third-party scripts such as Google Tag Manager, so content and carousel posters appear sooner. - The home page featured carousel and the header menu keep their layout while the page loads. ### 1.2.30 — October 21, 2026 - Contact form on the Contact page, with the same look as the sign-in page (Dbmovies 1.3.37 or later). - Cloudflare Turnstile on the sign-in, sign-up, password reset and contact forms (Dbmovies 1.3.37 or later). - The Browser page shows the content explorer, and on mobile the title of regular pages no longer sits under the header. ### 1.2.29 — October 20, 2026 - Collections can be rated, saved to My list and shared. - Collection pages show the years they cover, the number of movies and TV shows, the main genres and the recurring cast. Titles can be sorted by newest first, release order or top rated (Dbmovies 1.3.36 or later). - Episodes show quality and language badges (Dbmovies 1.3.36 or later). ### 1.2.28 — October 17, 2026 - When you open a movie or TV show from a list, its poster appears right away. The full-quality poster replaces it as soon as it loads. - Cast photos appear right away in the same way when you open a person. ### 1.2.27 — October 17, 2026 - Pages no longer show a full-screen loading spinner, and every image shows a loading background. - On iPhone, the Next and Previous buttons no longer scroll to the footer. - Episode thumbnails are no longer empty while they load. ### 1.2.26 — October 13, 2026 - Signing in with a password returns visitors to the page they came from. - Complete Spanish translation. ### 1.2.25 — October 13, 2026 - Account menu in the header, and a new mobile menu. - Videos play inside the page on phones, and full width on desktop. - Auto-Embed sources on movie pages (Dbmovies 1.3.30 or later). ### 1.2.24 — October 12, 2026 - Paid memberships with PayPal: subscribe, automatic renewal and renewal cancellation (Dbmovies 1.3.29 or later). - My links and Messages show a preview of the sections on the way. ## FAQ ### Do I need Dbmovies? Yes. Dbmovies imports and manages the catalog, and Wovie displays it. Without the plugin active, the theme shows a warning in the admin and no content on the site. ### Does Wovie include or host videos? No. Wovie does not include, host or stream any video. You add your own video sources in Dbmovies, and you are responsible for having the rights to publish them. ### Can I sell memberships? Yes. With Dbmovies 1.3.29 or later and PayPal set up in the plugin, Wovie shows the plans, lets members subscribe and cancel the renewal, and shows their payment method and billing history. Sources marked as premium are only available to subscribers. ### Does it work well on phones? Yes. Wovie is designed for phones first: the account menu opens as a bottom sheet, videos play inside the page and lists support swipe gestures. ### Which languages are included? English and Spanish. The theme is translation-ready, so you can add other languages with a standard translation file. ### Does it work with SEO plugins? Yes. Wovie adds structured data for movies, TV shows and people, and steps aside when Yoast, Rank Math, SEOPress, All in One SEO, The SEO Framework or Slim SEO is active, so nothing is duplicated. ### How do I get updates? Activate your Wovie license in Dbmovies, in the Updates screen. WordPress then shows new versions of the theme and installs them like any other update. ### Can I customize the design? You can change the logos, the header and footer menus and the home page sections from WordPress. For deeper changes, use a child theme. # Dbmovies > The all-in-one plugin for movie and TV websites: one-click imports, automatic episodes, link management and paid memberships. Source: https://doothemes.com/items/dbmovies - Type: Plugin - Version: 1.3.38 (released Oct 22, 2026) - Demo: https://demo.wovie.co - Documentation: https://doothemes.com/docs/dbmovies - WordPress: 7.0 or later (tested up to 7.1.3) - PHP Required: 8.1 or later - Languages: English, Spanish ## 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 website: catalog, accounts, links and memberships in one plugin.** Import any movie or TV show from TMDb in one click and get a page ready to publish: poster, backdrops, synopsis, genres, trailer, cast and crew, and TMDb and IMDb ratings. Import a TV show and its aired episodes are created on their own in the background, one season at a time. Manage every video link from one screen. Add links by hand, load thousands from a spreadsheet, or generate them for every title from your provider's URL pattern with Auto-Embed. Dbmovies checks which links still work, so your visitors do not land on dead ones. Give your audience real accounts with My List, ratings, comments and title requests. Earn from your traffic with premium memberships billed automatically through PayPal, premium-only links and built-in ad slots. Built for production sites with thousands of titles: background tasks with time limits, a metadata updater that keeps ratings fresh on its own, and a clean, fast admin. Pair it with the Wovie theme for a front end that is ready to launch. > Dbmovies does not include, host or stream any video. You add your own video sources and you are responsible for having the rights to publish them. ## Features #### Import & catalog - **One-click import** from TMDb: poster, backdrops, synopsis, genres, countries, release date, trailer, cast and crew, plus TMDb and IMDb ratings. - **Search or discover** titles by year, genre and popularity, and import a whole page of results at once with Bulk import. - **Quick import**: paste a TMDb or IMDb link or ID from the Movies or TV Shows list. - **Automatic episodes**: every TV show you import queues its aired episodes, which are created in the background, one season at a time. Choose the season order, import only the latest seasons or set a limit of episodes per show. - **Meta Updater**: refreshes ratings, cast and metadata of your titles on a schedule, in short runs that do not slow down your site. - **Cast & crew** for every title, with the real directors and the main cast of all seasons, and collections to group titles into curated sets. - Built-in TMDb proxy for servers that cannot reach TMDb directly. #### Links - **One screen for every link**: host, language, quality, type (embed, download or MP4), status, health, premium access and plays, with search and filters. - **Import links from Excel or CSV**: up to 5,000 rows per file, matched by TMDb or IMDb ID. You see a full preview before anything is saved, and links that already exist are skipped. - **Auto-Embed**: generate embed links for every movie and episode from your provider's URL pattern. One change in the settings updates every title, and any title can be excluded with one switch. - **Link health**: checks MEGA, 1fichier, MediaFire, MegaUp and YouTube links one by one or in bulk, and tells you which ones still work. - **Domain exchanger**: when a host changes its domain, update every link in one step. - Visitors can report broken links, and premium-only links are reserved for members. #### Accounts & community - Sign-up and sign-in, including Google sign-in and reCAPTCHA. - My List, ratings, and title requests that you approve and import from the admin. - Comments with custom emojis. - Account area: profile, phone, email change with a one-time code, active sessions and membership. - Sign-in limits that read the visitor's real IP address, also behind Cloudflare. #### Monetization - **Premium memberships** with automatic recurring billing through PayPal, or manual activation for any other payment method. - Members who cancel keep their access until the end of the paid period. - Plans with their own price and duration, and tax settings. - Payments and Subscriptions screens with every charge, refund and renewal, plus email notices for each step. - Ad management with your own slots and campaigns. #### Built for operators - Fast admin with pending requests and links in the toolbar. - Background tasks with time limits that pause on their own when TMDb limits requests. - Users list with membership, sign-in method, last login, total paid and activity. - Site Health checks for TMDb, WP-Cron and your license. - Maintenance tools: orphan persons cleanup, domain exchanger and bulk cleanup actions. - REST API for headless front ends and integrations. - Translation-ready, with a complete Spanish translation included. - License hub: one place to manage the licenses and updates of your Doothemes themes, such as Wovie. ## Requirements #### Server - WordPress 7.0 or higher - PHP 8.1 or higher - MySQL 5.7+ or MariaDB 10.3+ - Pretty permalinks enabled - A server cron job that calls wp-cron.php every minute (recommended for Automatic episodes and the Meta Updater, above all on sites with few visits) #### Configuration - A free TMDb API key - Outbound HTTPS access to TMDb and to the Doothemes update server (or the built-in TMDb proxy) - An active Dbmovies license for importing, background tasks and updates #### Recommended - The Wovie theme, for a front end that is ready to launch - Object cache (Redis or Memcached) and a CDN on high-traffic sites - A PayPal business account with a REST app, to charge memberships automatically ## Changelog ### v1.3.38 — Oct 22, 2026 - Dbmovies widget in the WordPress dashboard: what needs your attention, and the status of your license, Automatic episodes, the Meta Updater, Sync List and scheduled tasks. - Docs tab with links to the official documentation and a button to open a support ticket. - At a Glance shows your published movies, TV shows, episodes and links. - Complete Spanish translation. ### v1.3.37 — Oct 21, 2026 - Contact form with its own inbox in Dbmovies › Contact: read the messages, reply by email and mark spam. - Cloudflare Turnstile protects the sign-up, sign-in, password recovery and contact forms from bots. - Sync List shares links between your own Dbmovies sites. - The Firewall blacklist accepts one address per line, IP ranges and IPv6. - With Redis, new and deleted titles update the lists and the live search right away. - Updating a title no longer changes its status or its date. - Fixes in Quick Edit badges, featured titles and the Web App start address. ### v1.3.36 — Oct 20, 2026 - Quality and language badges for episodes, chosen from the same lists as movies and TV shows. - Collection pages can sort their titles by release date or rating, and show a summary: movies and TV shows, years, main genres and the cast that appears in several titles. - Collection pages list their titles by release date by default. - Removing or deleting a title now updates the count and header images of its collections. - Dbmovies › Updates shows the icon of each Doothemes product. - Sharper posters in the Related content box of collections. ### v1.3.35 — Oct 17, 2026 - Complete Spanish translation of the latest features. ### v1.3.34 — Oct 16, 2026 - The Automatic episodes panel lists the TV shows in the queue and refreshes on its own while it works. - Auto-Embed: one switch per title to leave it out. On a TV show, it applies to all its episodes. - Help panel in the importer. ### v1.3.33 — Oct 14, 2026 - The Meta Updater can run every minute. - More reliable IMDb data, with the reason of each error in the debug log. ### v1.3.32 — Oct 14, 2026 - Movies save their real directors, and TV shows the main cast of all seasons. - Persons that no title uses anymore are deleted. - The visitor IP address can no longer be faked to get around the sign-in limits. ### v1.3.31 — Oct 13, 2026 - Users list with membership, sign-in method, last login, total paid and activity. - Fixes in sign-in and password reset on sites in any time zone. ### v1.3.30 — Oct 13, 2026 - Auto-Embed: embed links for every movie and episode, built from each title's IDs. ### v1.3.29 — Oct 12, 2026 - Automatic recurring billing for memberships with PayPal. - Email notices for accounts and subscriptions. ## FAQ ### Does Dbmovies include movies or videos? No. Dbmovies imports the information of each title (synopsis, images, cast, ratings) from TMDb and IMDb data. It does not include, host or stream any video. You add your own video sources and you are responsible for having the rights to publish them. ### Do I need the Wovie theme? Dbmovies manages the catalog, links, accounts and payments, and the theme shows them to your visitors. [Wovie](https://doothemes.com/items/wovie) is built for Dbmovies and uses all its features, so it is the recommended way to launch. Other themes can show the catalog as regular WordPress content, but the player, accounts and memberships need a compatible theme. ### Do I need a TMDb API key? Yes. It is free: create an account at [themoviedb.org](https://themoviedb.org) and request an API key. If your server cannot reach TMDb, turn on the built-in proxy in the settings (it needs an active license). ### What are the API requests per day? Some features use the Doothemes server: IMDb ratings for each movie or TV show you import or update, the optional TMDb proxy, and license checks. Your license includes that number of requests per day, and the count resets every day. Requests to TMDb with your own API key do not count, and episodes do not use IMDb requests. The importer shows how many you have used today. ### What happens when my license expires? Your site and everything you imported keep working. Importing new titles, the background tasks (Automatic episodes and the Meta Updater), IMDb data, plugin updates and changes to the plugin settings need an active license, so they stop until you renew. Renewals have a discount. ### Can I move my license to another domain? Yes. Deactivate the license in Dbmovies › Updates on the old site and activate it on the new one. Each license works on the number of sites of its plan at the same time. ### Which payment methods can my members use? Automatic recurring billing works with PayPal. You can also activate memberships by hand for payments you receive any other way, such as a bank transfer, and Dbmovies tracks them in the same Payments screen. ### Which languages does it support? English and Spanish are included. Dbmovies is translation-ready, so you can translate it to any language with tools such as Loco Translate or Poedit. ### What hosting do I need? WordPress 7.0 or higher, PHP 8.1 or higher and MySQL 5.7+ or MariaDB 10.3+. For the background tasks, we recommend a server cron job that calls wp-cron.php every minute. Large catalogs work best with an object cache such as Redis and a CDN for images. # DooPlay > WordPress theme for movies and TVShows Source: https://doothemes.com/items/dooplay - Type: Theme - Version: 2.5.28 (released Oct 19, 2026) - Demo: https://demo.ews.pe/dooplay - WP Required: 7+ - WP Tested: 7.1.3 ## 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.28 `Oct 19, 2026` This update fixes two small issues. Sites that create episodes by hand with a TMDb ID that is not a number should install it. #### Fixes - A new episode did not appear on its season page for up to 48 hours when the series used a TMDb ID with letters, spaces or accents. It now appears as soon as the episode is saved. - The WordPress login screen showed a PHP warning when no custom login logo was set. --- ### v2.5.27 `Oct 03, 2026` This hotfix brings back the duplicate check when you import from the Add New screen. Get data on an entry that was already imported still refreshes it. #### Fixes - Importing a movie, TV show, season or episode with Get data from its Add New screen created a duplicate when the entry already existed, with no warning, even with Allow repeated content turned off. The warning now appears and nothing is imported. --- ### v2.5.26 `Oct 01, 2026` This hotfix brings back the Load more button on the account page and on public profiles. No saved titles were lost: they were only hidden. #### Fixes - Users with more than 18 titles in Favorites or Seen could not load the rest on their account page or on their public profile: the Load more button did not appear. - The Favorites and Seen totals on those pages showed the wrong number. #### After updating - If your child theme has its own copy of the account page or the public profile template, replace it with the new version from the theme: old copies do not get the fix. --- ### v2.5.25 `Sep 23, 2026` This release makes the view counter lighter on the server and closes several security issues. Updating is a priority for every site, especially sites that use the player page for MP4 sources. #### Important changes - With *User register enable* turned off (the default), visitors can no longer create an account from the Account page. Before, the setting only hid the Sign Up link. - Search engines and other bots no longer add views, so view counts grow more slowly than before. - With reCAPTCHA v3 keys set, sign-up and the contact form now reject visitors with a low score. #### Improvements - The Ajax view counter answers faster and no longer loads the admin area on every visit. - The first visit to a title no longer clears the object cache (Redis, Memcached) for the whole site. - Title pages no longer reload all their data from the database after each view. - The Ajax view counter only counts published titles, and only when *View count* is set to Ajax. #### Fixes - A crafted link to the player page could run scripts on the site. - Anyone could see the pending and deleted links of a user on their public profile. - Another website could sign visitors out of the site. - With the *wp-json* delivery method, iframe sources were not cleaned, and some requests returned a server error. - Google Drive share links ending in `/view` were not read correctly. - Genre names with parentheses broke the genre list. #### After updating - If visitors should be able to create accounts, turn on *User register enable* in Settings › General. --- ### 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. # 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://doothemes.com/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 tags, scripts, and your browser's 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 keep you signed in and remember your settings, to process orders and downloads, to credit affiliate referrals, to offer live chat, 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. --- ## 4. Categories of Cookies We Use - **Strictly necessary** — keep you signed in, protect forms against forgery, and remember your cookie choice. The Services cannot work properly without them. - **Functional** — remember your preferences, such as your light or dark theme and the email address you last used to sign in. - **Analytics** — help us measure traffic and improve the Services, through our own first-party analytics and through Google Analytics. We also use Cloudflare Web Analytics, which does not use cookies. - **Referral** — when you arrive through an affiliate link, record which affiliate referred you so that the referral can be credited. - **Live chat** — keep your conversation with our team across pages, through Tawk.to. - **Security** — Cloudflare, which protects the Services, may set cookies to tell people apart from automated traffic. We do not use advertising or retargeting cookies of our own. Some pages show ads served by Carbon Ads, which receives basic technical information, such as your IP address and browser, to deliver the ad. --- ## 5. Cookies We Set | Cookie | Category | Purpose | Duration | |---|---|---|---| | `doo_session` | Strictly necessary | Keeps you signed in and holds your session | 30 days | | `csrf_cookie_name` | Strictly necessary | Protects forms against cross-site request forgery | 24 hours | | `doo_cookie_consent` | Strictly necessary | Remembers that you answered the cookie notice | 1 year | | `doo_theme`, `doo_theme_mode` | Functional | Remember your light or dark theme | 1 year | | `dv` | Analytics | Our own anonymous visitor identifier, used to count unique visitors | 2 years | | `aff_ref` | Referral | Records the affiliate who referred you | 60 days | We also use your browser's local storage, which stays on your device, to remember a few conveniences, such as the email address you last used to sign in and some display choices. --- ## 6. Third-Party Cookies Some cookies are set by third-party services that we use. These providers process cookie data in accordance with their own privacy and cookie policies, which we encourage you to review. | Provider | Cookies | Purpose | |---|---|---| | Google Analytics | `_ga`, `_ga_*` | Measures traffic and how the Services are used (up to 2 years) | | Tawk.to | `twk_uuid_*` and related | Runs the live chat and keeps your conversation | | Cloudflare | `__cf_bm` and related | Security and protection against automated traffic | The Services may also load content from payment providers, such as PayPal and Mercado Pago, during checkout, and from Google when you choose to sign in with your Google account. These providers may set their own cookies on their own pages. --- ## 7. 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 durations of the cookies we set are listed in Section 5. --- ## 8. Managing Your Cookie Preferences You can review and change your cookie choices at any time: - **Browser settings** — most browsers allow you to view, manage, block, or delete cookies, including for a single website. 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. - **Google Analytics** — you can opt out of Google Analytics on all websites by installing the [Google Analytics Opt-out Browser Add-on](https://tools.google.com/dlpage/gaoptout). - **Our cookie notice** — the notice shown on your first visit records your choice in the `doo_cookie_consent` cookie. To see it again, delete that cookie in your browser. --- ## 9. 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 them, some features, such as signing in, completing a purchase, or downloading products, may not work correctly. Disabling functional, analytics, referral, or live chat cookies will not prevent you from using the Services, but some features, such as live chat or affiliate credit for a referral, may not work, and your experience may be less personalized. --- ## 10. 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. --- ## 11. 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"). EWS Networks is the controller of the personal information described in this Policy. Doothemes provides premium WordPress themes and related software, customer accounts, theme licensing, automatic updates, customer support, and an affiliate program. 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 and sign-in providers. ### 2.1 Information You Provide to Us You may provide the following information when you register, make a purchase, request support, join our affiliate program, or otherwise interact with us: - **Account information** — your name, email address, and password. We store your password only as a one-way hash that no one, including us, can read. - **Optional profile information** — details you choose to add in your account settings, such as your display name, profile photo, phone number, date of birth, gender, social profiles (for example Discord, Instagram, Telegram, WhatsApp, GitHub, or X), and saved addresses. - **Preferences** — your interface language, the language you want us to write to you in, your time zone, your theme, and your notification and sign-in alert settings. - **Billing and tax details** — billing name, billing address, country, and, where applicable, business name and tax identification number. - **Order and license information** — the products you purchase, the license keys issued to you, and the domains on which you activate your products. - **Support communications** — the content of your support tickets, messages, and attachments, and any site details or temporary access you choose to share with our team. - **Affiliate program information** — if you join our affiliate program, your payout method and payout details (such as a PayPal email address, a cryptocurrency wallet address, or bank account details), together with the referrals, commissions, and payouts linked to your account. ### 2.2 Signing In with Google If you choose "Continue with Google", Google shares with us your name, your email address, whether Google has verified that email address, and a unique identifier for your Google account. We use this information only to create your account or sign you in, and to link your Google account to your Doothemes account. We never receive your Google password. You can unlink your Google account from your account settings at any time, after you have created a password for your Doothemes account. Your use of Google is also governed by Google's own privacy policy. ### 2.3 Payment Information When you make a purchase, your payment is processed by third-party payment providers, such as PayPal and Mercado Pago. We do **not** collect or store your full credit or debit card numbers on our own servers. The payment provider 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 payment method, the last digits of the card, and the billing country. If you pay with cryptocurrency, we show you a wallet address for your order and record the amount, the currency, and the transaction details needed to match your payment. Transactions on public blockchains are visible to anyone and cannot be deleted by us. ### 2.4 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 type, 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. - **Approximate location** — the country, region, and city associated with your IP address. When you open a support ticket, we record the IP address it was opened from and its approximate location (country, region, city, postal code, network provider, time zone, and approximate coordinates) to help us assist you and to detect fraud. - **Account security data** — your active sessions (device, browser, IP address, and last activity), a history of the IP addresses used to access your account, and sign-in events, so that you can review your sessions and we can alert you to unusual activity. - **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, downloads, and requests for security, debugging, and performance monitoring. ### 2.5 Cookies and Similar Technologies We use cookies and similar technologies to operate the Services, remember your preferences, keep you signed in, and understand how the Services are used. The main categories are: - **Strictly necessary cookies** — enable core functions such as signing in, security, and checkout, and remember your cookie choice. - **Functional cookies** — remember your preferences, such as your theme and language. - **Analytics** — our own first-party analytics, plus Google Analytics and Cloudflare Web Analytics, which help us measure traffic and improve the Services. - **Referral cookies** — when you arrive through an affiliate link, a cookie records which affiliate referred you, for up to 60 days, so that the referral can be credited. - **Live chat** — our chat provider sets a cookie to keep your conversation with us across pages. The Services may also display advertising served by Carbon Ads, which receives basic technical information (such as your IP address and browser) to deliver the ad. You can manage or disable cookies through your browser settings or through the controls described on our [Cookie Preferences](https://doothemes.com/p/cookie-preferences) page. Disabling certain cookies may affect the functionality of the Services. See **Section 12** for more details. --- ## 3. How We Use Your Information We use the information we collect for the following purposes: - To create and manage your account, authenticate your access, and let you sign in with Google if you choose to. - To process orders, deliver digital products, issue and verify license keys, and provide automatic theme updates. - To provide customer support, including through live chat and support tickets. - To send transactional messages such as order confirmations, license details, verification codes, security and sign-in alerts, and important service notices. - To send a limited number of reminders about an order you started but did not pay, each of which includes a link to stop them. - To operate our affiliate program, including crediting referrals and paying commissions. - To send marketing communications 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, and to 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 Where the law requires a legal basis for processing personal information (for example, in the European Economic Area, the United Kingdom, or Peru), we rely on one or more of the following: - **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, signing in with Google, 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 the vendors listed in Section 6, who perform services on our behalf. They 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 ask us to share information, or otherwise authorize us to disclose it. --- ## 6. Service Providers and Third Parties The Services rely on the following categories of providers. Each processes data under its own privacy policy and security practices. - **Hosting, content delivery, and security** — cloud hosting providers and Cloudflare, which also tells us the country a visit comes from. - **Payments** — PayPal and Mercado Pago. - **Sign-in** — Google, if you choose to sign in with your Google account. - **Email delivery** — the provider we use to send transactional and account emails. - **Analytics** — Google Analytics and Cloudflare Web Analytics. - **Live chat** — Tawk.to, which receives the messages you send through the chat and the details you provide there. - **Advertising** — Carbon Ads, which serves the ads shown on some pages. - **IP geolocation** — IPinfo, which returns the approximate location of an IP address. - **Internal notifications** — Telegram, which our team uses to receive alerts about account activity (such as new sign-ups and sign-ins), including the email address and IP address involved. - **AI-assisted support tools** — our team may use AI tools, such as Anthropic's Claude, to help read and answer support requests and to review account and order information. These tools act on our instructions and under their providers' terms. We encourage you to review the privacy policies of the third-party services 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, and as required to comply with our legal obligations, resolve disputes, enforce our agreements, maintain security, and keep accurate financial and transaction records. In particular: - **Account deletion** — when you request the deletion of your account, it is scheduled for deletion after a grace period of 90 days. Signing in during that period cancels the request. After it ends, your personal information is deleted or anonymized and your licenses are revoked, except for the records we must keep by law, such as invoices and payment records. - **Analytics** — our individual visit records are kept for up to two years. Aggregated statistics, which do not identify you, may be kept indefinitely. - **Financial records** — orders, payments, and affiliate payouts are kept for as long as tax and accounting laws require. 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, encryption of sensitive settings at rest, hashed passwords, one-time verification codes for sensitive account changes, 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, and any Google account you use to sign in, 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 the United States and other countries where our service providers operate, which 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. Many of these you can exercise yourself from your account settings: you can review and edit your information, download a copy of your account data, review and close your active sessions, link or unlink Google, and request the deletion of your account. **Peru.** If you are in Peru, you have the rights of access, rectification, cancellation, and opposition (ARCO rights) under Law No. 29733, the Personal Data Protection Law, and its regulations. If you believe your rights have not been respected, you may also file a claim with the National Authority for Personal Data Protection (Autoridad Nacional de Protección de Datos Personales). **California.** 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 the options described on our [Cookie Preferences](https://doothemes.com/p/cookie-preferences) page. Please note that blocking strictly necessary cookies may prevent parts of the Services, such as signing in 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:** info@doothemes.com - **Support:** open a ticket from your [account](https://doothemes.com/account/tickets) 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, 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/p/privacy-policy) and [Refund Policy](https://doothemes.com/p/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 through the Services, including support tickets, messages, attachments, and comments. - **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, either with your email address and a password or by signing in with a third-party provider such as Google. 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. If you sign in with a third-party provider, you are also responsible for the security of that provider account, since access to it gives access to your Account. You can link or unlink the provider, and create a password for your Account, from your account settings. 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 support tickets opened from your [account](https://doothemes.com/account/tickets) 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 Support Communications You retain ownership of your User Content. By submitting User Content through the Services, including support tickets, messages, and attachments, you grant us a non-exclusive, worldwide, royalty-free license to host, store, reproduce, and use that content for the purpose of providing support, operating, and improving the Services. You are responsible for your User Content and agree not to submit anything unlawful, infringing, abusive, or otherwise objectionable. Do not include passwords or other credentials in your messages unless our team specifically asks for temporary access. 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 the Republic 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 Lima, Peru, 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, the Refund Policy, and any additional terms that apply to a specific program you join (such as the [Affiliate Program Terms](https://doothemes.com/docs/affiliates/terms-conditions)), 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 - **Support:** open a ticket from your [account](https://doothemes.com/account/tickets)