# Adding Affiliates (/docs/adding-affiliates) As a store owner, Users always apply to join your affiliate program via your store's customer portal. Anyone can apply to join your affiliate program, they do not neccessarily need to have purchased a product from your store before, and they do not need to create a SellApp account or store. Note that this means you cannot manually add affiliates at this time *** ## Application Flow [#application-flow] As mentioned above, the application flow starts with a user navigating to your store's customer portal. There, they will find an "Affiliate Program" option in the sidebar *(provided you've enabled the affiliate program in your store's settings)*. This page will show them a general overview of your store's affiliate program, with a button that lets them apply. Once the user has applied to your affiliate program, the affiliate request will be shown [in the Affiliates dashboard](https://sell.app/dashboard/affiliates) The status of the request will depend on whether you've enabled or disabled the "Affiliate Approval" toggle in your store's affiliate settings. * If the toggle is enabled, all affiliate requests are automatically accepted. The status of the affiliate [in the Affiliates dashboard](https://sell.app/dashboard/affiliates) will be shown as "Active" * If the toggle is disabled, all affiliate requests need to be manually reviewed. The status of the affiliate [in the Affiliates dashboard](https://sell.app/dashboard/affiliates) will be shown as "Pending" * If the status is "Pending", clicking on the relevant affiliate will open a slide-over where you can accept or reject an affiliate. * Once rejected, an affiliate can no longer reapply. However, you can opt to enable them at any point from the dashboard Once an affiliate has been accepted, they will be shown an affiliate dashboard in the customer portal. Here, they can see their earnings, copy their affiliate link, and see recent referrals & payouts. *** ## Frequently Asked Questions [#frequently-asked-questions] ### Can I disable accepted affiliates at any time? [#can-i-disable-accepted-affiliates-at-any-time] Yes, you can always disable affiliates with an "accepted" status [in the Affiliates dashboard](https://sell.app/dashboard/affiliates). A disabled affiliate can be re-activated via the dashboard as well. ### Can I modify the "Affiliate Approval" toggle at any time? [#can-i-modify-the-affiliate-approval-toggle-at-any-time] Yes, all your store's affiliate program settings can be modified at any time. # Introduction (/docs/affiliate-program-introduction) Create an affiliate program for your store in just a few clicks, and attract affiliates who promote your products in exchange for a commission. SellApp has built an affiliate system which comes with all the prerequisites to successfully run your affiliate program: * Flexible configuration options, including the following: * Auto-approving new affiliates * Minimum payout amount * Commission rate * And more * A comprehensive dashboard for affiliates to keep track of their earnings, referrals, and payouts * Notifications for new affiliate applications, pending payouts, and more * Automatic commission calculation when orders are completed *** ## The affiliate program explained [#the-affiliate-program-explained] To get started with the affiliate program, it is important to know how the affiliate program works. Let's start with a general overview. 1. A store can configure an affiliate program. Once enabled, users can apply to join the affiliate program from the store's customer portal 2. When users apply to join your store's affiliate program, you will receive that request [in the Affiliates dashboard](https://sell.app/dashboard/affiliates) with a status of pending 3. Once you accept the request, the affiliate can start promoting your product(s) with their unique affiliate ID 4. Whenever an affiliate refers a customer with their affiliate code, the purchase is attributed to them. You can see referred purchases [in the Referrals dashboard](https://sell.app/dashboard/affiliates/referrals) 5. Once an affiliate has referred enough customers to meet the minimum payout threshold, which is defined in your store's affiliate settings, they will be eligible for a payout 6. On the **1st and 15th of the month**, you will receive a notification to pay eligible affiliates out. 7. SellApp does not handle payouts, but we do make it very easy. [The Payouts dashboard](https://sell.app/dashboard/affiliates/payouts) lets you export pending payouts with all the prerequisite information to pay your affiliates out (in bulk) *** ## Frequently Asked Questions [#frequently-asked-questions] ### How much does it cost to use the affiliate program? [#how-much-does-it-cost-to-use-the-affiliate-program] We do not charge any additional fees for the affiliate program, it's included in SellApp's default pricing structure ### Does this work with crypto payments? [#does-this-work-with-crypto-payments] Yes, the affiliate program works across all current and future payment methods present on SellApp, which includes crypto payment methods. ### Does SellApp handle paying affiliates out, or do I have to do so myself? [#does-sellapp-handle-paying-affiliates-out-or-do-i-have-to-do-so-myself] SellApp does not handle payouts, but we do make it very easy. [The Payouts dashboard](https://sell.app/dashboard/affiliates/payouts) lets you export pending payouts with all the prerequisite information to pay your affiliates out **(in bulk where applicable)** ### Does the embed modal recognize affiliate referrals? [#does-the-embed-modal-recognize-affiliate-referrals] Yes, it works out of the box and optionally supports a hardcoded `data-sell-affiliate` variable ### Can affiliates see customer information? [#can-affiliates-see-customer-information] No, affiliates are only shown a high-level overview of their referrals. The information displayed does not include any customer information such as emails or IP addresses # Double-sided Incentives (/docs/double-sided-incentives) ## What is a double-sided incentive? [#what-is-a-double-sided-incentive] A double-sided incentive is something that benefits two sides of a transaction. In the context of your store's affiliate program, this is a coupon code that is tied to a specific affiliate. The two incentives are as follows: 1. The affiliate has the incentive to generate referrals in exchange for earning commissions 2. The referred customer has the incentive to purchase your products at a discounted price with the affiliate-specific coupon The affiliate-specific coupon has the added benefit of being able to attribute a referral to an affiliate in a privacy-preserving and cookie-free way. *** ## Creating an affiliate-specific coupon [#creating-an-affiliate-specific-coupon] In just a few simple steps, you can create and configure an affiliate-specific coupon. Here's how: 1. Navigate to [the Affiliates dashboard](https://sell.app/dashboard/affiliates) 2. Click on the relevant affiliate to open their slide-over 3. Navigate to the the "Settings" section and click on the "Affiliate Coupon" button 4. Toggle "Create Affiliate Coupon" on, then fill in the details Finally, click the "Save" button and you're good to go. The affiliate will be able to view this coupon and share it with potential customers on their end. *** ## Coupon Options [#coupon-options] You can configure the coupon to your preferences. Below you will find each coupon option and its explanation. 1. **Coupon Code**: This is the coupon code a potential customer will submit when placing a purchase. * Should the code leak at any point in time, you can always change it to anything else of your choosing 2. **Coupon Value**: This is the value of the coupon code that will apply to the purchase, either amount-based or percentage-based * An amount-based discount deducts a specific amount from the purchase price. * If the price is $5 and the amount entered is "1", then a discount of $1 will apply and the customer will pay $4 * A percentage-based discount deducts a percentage from the purchase price * If the price is $5 and the percentage entered is "10", then a discount of $0.50 will apply and the customer will pay $4.50 3. **Limit Usage**: When toggled off, the coupon can be used unlimited times. When toggled on, you can specify the number of times this coupon can be used for before it's disabled 4. **Expire Coupon**: When toggled off, this coupon can be used at any time. When toggled on, you can specify a maximum duration within which a coupon can be used, after which the coupon gets disabled 5. **Apply Storewide**: When toggled on, the coupon can be applied to all products in a store. When toggled off, a dropdown will appear with which you can specify the product(s) that this coupon can be applied to *** ## Frequently Asked Questions [#frequently-asked-questions] ### Will the affiliate's commission be calculated based on the full price or the discounted price? [#will-the-affiliates-commission-be-calculated-based-on-the-full-price-or-the-discounted-price] The affiliate's commission will be calculated based on the discounted price # For Affiliates: Program Explained (/docs/for-affiliates) This page is dedicated to affiliates who are either part of an affiliate program, or are looking to join an affiliate program If you're looking to either join an affiliate program of a store, or are already an affiliate, this page is for you. We will start by explaining how to apply to an affiliate program, and continue with a high-level overview of each dashboard's purpose. *** ## Joining an affiliate program [#joining-an-affiliate-program] To join an affiliate program, navigate to the store's respective customer portal. The customer portal can be found by appending /customer-portal to a store's URL * If the store URL is bob.sell.app, then the customer portal can be found at bob.sell.app/customer-portal * If the store URL is example.com, then the customer portal can be found at example.com/customer-portal Once you've logged into the customer portal, you will be met with a list of your orders placed on the store. To the left of the page you will find a sidebar containing a number of options. * If the store does not have an affiliate program present, then you will not see a dropdown called "Affiliate Program" * If the store does have an affiliate program present, then you will see a dropdown called "Affiliate Program". Clicking any option in that dropdown will redirect you to the join page, which looks like bob.sell.app/customer-portal/affiliates/join In the second case, where a store does have an affiliate program, you will see an overview of this affiliate program's benefits. If this is your first time applying to an affiliate program, you will see a "Become an Affiliate" button. If this is not your first time applying to an affiliate program, skip the following block of text *** For first-time affiliates who are not affiliates at other stores, clicking the "Become an Affiliate" button [will redirect you to a form](https://affiliates.sell.app) that you will need to fill in once. Note the following: * This information cannot be changed further down the line * The submited information will be visible to all stores you apply to Once you complete filling in your profile and clicking the "Submit Profile" button, navigate back to the customer portal *(which looks like bob.sell.app/customer-portal/affiliates/join)* and proceed with the below *** Once you click on the "Apply" button in the /join page, a modal will appear. Here you can see the supported payout methods this store can pay in, and specify your relevant payout details. Additionally, you can write a relevant message to the store explaining your motivations/interest in joining the affiliate program Once you've clicked "Join" either the store needs to review your request, or they will auto-approve your request. This depends on the store's affiliate program settings. *** ## Affiliate Dashboard Explained [#affiliate-dashboard-explained] Once you've been accepted to the affiliate program, the customer portal should show a number of options in the "Affiliate Program". The first of which is the "Overview" This overview is a dashboard with a high-level overview of your affiliate activity and information 1. A configurable chart displaying your earnings, both paid and unpaid. 2. Your unique affiliate link, and optionally your unique affiliate coupon code *(if set)* 3. Your 5 most recent referrals generated for the store 4. Your 5 most recent payouts *** ## Products Dashboard Explained [#products-dashboard-explained] The second dropdown option is the "Products" dashboard This dashboard also displays your affiliate link, as shown in the dashboard overview. In addition, the dashboard displays a list of products with a breakdown of their price and commission rate. This can come in handy to see which products are eligible for a commission, and what the commission rates are. A store can assign custom commission rates per product, on an affiliate-by-affiliate basis. Should this be the case for you, this dashboard will display all of the custom rates. *** ## Referrals Dashboard Explained [#referrals-dashboard-explained] The third dropdown option is the "Referrals" dashboard This dashboard displays a list of all referrals generated by you, each displaying the date, status, and commission earned. Clicking on a specific referral will open a slide-over that displays a breakdown of how the commission has been calculated, alongside a timeline of the referral's statuses. *** ## Payouts Dashboard Explained [#payouts-dashboard-explained] The fourth dropdown option is the "Payouts" dashboard This dashboard displays a list of all payouts associated with your affiliate profile, each displaying the date, status, and payout amount. Clicking on a specific payout will open a slide-over that displays a breakdown of how the payout has been calculated, alongside a list of associated referrals and a timeline of the payout's statuses. *** ## Affiliate Settings Explained [#affiliate-settings-explained] The fifth and final dropdown option is the "Settings" overview This overview helps you modify your payout details, should you need to do so at any time. When updating your payout details, subsequent payouts will be sent to the new payout details. Additionally, you will be shown your unique affiliate coupon code *(if set)* and a description of this coupon's properties. The coupon can be used to further incentivize potential to make a purchase, resulting in you earning more referrals. *** ## Frequently Asked Questions [#frequently-asked-questions] ### How much does it cost to apply to an affiliate program? [#how-much-does-it-cost-to-apply-to-an-affiliate-program] No fees are charged for affiliates applying to an affiliate program. Additionally, you should also not be charged any fees for payouts or the like, except for potentially applicable payment processor fees. ### Can I join multiple affiliate programs? [#can-i-join-multiple-affiliate-programs] Yes, you can join as many affiliate programs as you like. ### How do I refer customers? [#how-do-i-refer-customers] Copy your unique affiliate link and send it over to the potential customer. Ensure that you do not remove the `?affiliate=[affiliateIdentifier]` value from the URL, as this is what is used to attribute a purchase to you You can also copy unique product URL's in the Products Dashboard ### Can I get paid out in... [#can-i-get-paid-out-in] This depends entirely on the store's payout settings. Where certain stores can only pay out in some payment methods, other stores can pay out in other payment methods. ### How long does it take before I get paid out for referrals generated? [#how-long-does-it-take-before-i-get-paid-out-for-referrals-generated] This depends on a number of factors. The first factor is what payment method the customer has paid with. * **For fiat payment methods**, such as PayPal or Stripe, the eligible for payout date is **30 days** after a purchase has been made. * This measure is in place to prevent affiliate fraud and factor in potential charge-backs. * **For crypto payment methods**, such as Bitcoin, the eligible for payout date is **immediately** once the purchase has been made. * This is because crypto payments are irreversible and are thus not prone to fraud On the first and fifteenth of every month, eligible referrals are calculated and a payout is generated. The store is then notified that the payouts are ready to be paid, after which the store manually sends the funds to your payout details. If your commission amount is less than the "Minimum Payout" amount specified by the store, then your payout will not be generated until you have exceeded the threshold. # Getting Started (/docs/getting-started-affiliate-program) There are only two steps involved in launching an affiliate program for your store. The first step is to navigate to [your store's affiliates settings](https://sell.app/dashboard/settings?settings=affiliates). This will display a list of configurable options for your store. SellApp store affiliate settings The second step is to fill each of these options in with the values of your choosing, and then saving the changes. Once you've done that, you're good to go! *** ## Affiliate Settings Explained [#affiliate-settings-explained] The below is an overview of each of the affiliate settings and their respective purpose. 1. **Affiliate Program toggle**: Enable or disable your store's affiliate program 2. **Affiliate Approval toggle**: Automatically or manually approve new affiliate requests 3. **Referral Commission Input**: Specify how much commission an affiliate can earn for each referral. * You can set either an amount-based value in USD, or a percentage-based value. 4. **Minimum Payout Balance input**: Specify how much an affiliate needs to earn in commissions before being eligible for a payout 5. **Tracking Duration input**: Specify for how long the affiliate can earn a commission on a customer's purchase. * For example, if this is set to 1 day, the affiliate only has 1 day for the visitor to make a purchase in order for them to be eligible for a commission. * If they referred a customer 2 days ago, then the affiliate would not be eligible for a commission any longer * If this is set to 10 days, the affiliate has 10 days for the visitor to make a purchase in order for them to be eligible for a commission 6. **Referrer Order dropdown**: Specify which referrer should be credited with a sale, in the case where a customer clicks on two referral links * The first referrer option credits is the affiliate who was first in referring the customer to your product * The last referrer option credits is the affiliate who most recently referred the customer to your product 7. **Payout Methods checkbox**: Select the payment methods you are able to pay affiliates out with 8. **Custom Products toggle**: Override the "Commission Rate Input" from point 6, and instead specify a commission on a product-by-product basis *** ## Frequently Asked Questions [#frequently-asked-questions] ### Can I specify a custom commission rate on an affiliate-by-affiliate basis? [#can-i-specify-a-custom-commission-rate-on-an-affiliate-by-affiliate-basis] Yes, once you approve an affiliate you can do so in the respective affiliate's slide-over. ### Do I have to configure any code on the storefront? [#do-i-have-to-configure-any-code-on-the-storefront] No, eveything is configured and ready to go out of the box. No code changes are required, unless you want to hard-code the `data-sell-affiliate` variable in your embed modal. # Handling Payouts (/docs/handling-payouts) Payouts can be viewed at any time [in the Payouts dashboard](https://sell.app/dashboard/affiliates/payouts) *** ## Payouts Dashboard [#payouts-dashboard] [The Payouts dashboard](https://sell.app/dashboard/affiliates/payouts) displays all affiliate payouts. Since all payouts are displayed regardless of their status or payout method, we have added two filters that help narrow things down. The first filter helps display payouts with a specific status. The status of each payout is either "Due" or "Paid" The second filter helps display payouts that are to be paid in a specific payment method. This filter can be used in conjunction with the export functionality in order to generate valid CSV exports for bulk payouts. For example, if you need to filter the payouts table for payouts that are due, and affiliates expecting to receive their payout sent to their PayPal account, you would do the following: 1. Set the **"Status"** dropdown to **"Due"** 2. Set the **"Payout method"** to **"PayPal"** The resulting table will exclusively display payouts that are due and to be paid out with PayPal. Subsequently, you can export these payouts by clicking the checkbox at the top left -> "Select All" -> "Export" You will then receive a CSV file that is formatted in such a way that you can import it to your PayPal account and pay all of these affiliates at one time. Once you have paid the affiliates via the respective payment method, **please make sure to navigate back to the Payouts dashboard and mark the respective payouts as "paid"** *** ## Payout Slide-over [#payout-slide-over] The payout slide-over provides a breakdown of the payout created. The first section displays a breakdown of how the affiliate's payout is calculated. The second section displays a table of referrals associated with this payout. Each individual referral can be viewed as well via the respective quick-action button. The third and final section displays a timeline of the payout, including when it was created, and paid. The slide-over also displays a number of quick actions: updating a payout's status, and displaying the associated affiliate. *** ## Frequently Asked Questions [#frequently-asked-questions] ### How do I use PayPal Mass Pay? [#how-do-i-use-paypal-mass-pay] To pay your affiliates with PayPal Mass Pay, you need to own a verified PayPal business account. If this is the case, proceed with applying for PayPal Mass Pay: 1. Sign in to your PayPal account and click the "Pay & Get Paid" button at the top of the page 2. Click ["Payouts"](https://www.paypal.com/payoutsweb/batchFileUpload?entry=nav) that is shown under "Make Payments" 3. Fill in the form by answering the four questions asked 4. Finally, click the "Submit" button Once done, you will need to wait for up to 3 days for PayPal to review and accept your request ### When are payouts generated? [#when-are-payouts-generated] Payouts are generated on the first and fifteenth of every month. ### When are referrals eligible for a payout? [#when-are-referrals-eligible-for-a-payout] Referrals become eligible for a payout once their status is "Accepted" and their eligible for payout date has been met. The eligible for payout date depends on the payment method the customer has paid with: * **For fiat payment methods**, such as PayPal or Stripe, the eligible for payout date is **30 days** after the purchase has been made. * This measure is in place to prevent affiliate fraud and factor in potential charge-backs. * **For crypto payment methods**, such as Bitcoin, the eligible for payout date is **immediately** once the purchase has been made. * This is because crypto payments are irreversible and are thus not prone to fraud # Managing Affiliates (/docs/managing-affiliates) Affiliates can be managed at any time [in the Affiliates dashboard](https://sell.app/dashboard/affiliates) *** ## Affiliates Dashboard [#affiliates-dashboard] [The Affiliates dashboard](https://sell.app/dashboard/affiliates) provides a general overview of all affiliates present in your store's affiliate program. The dashboard also helps you perform the following quick actions: 1. Accepting pending affiliate requests 2. Disabling and/or re-enabling affiliates 3. Opening a specific affiliate's slide-over *** ## Affiliate Slide-over [#affiliate-slide-over] The affiliate slide-over provides a more in-depth overview of an affiliate, which is split up into a number of tabs. 1. The first tab displays an overview of the affiliate's information. Of note is the "Settings" section, which consists of two buttons: * Affiliate Coupon: Create an affiliate-specific coupon which the affiliate can use for the following * To further incentivize potential customers to purchase your product(s) * It's another, privacy-preserving, way of associating an affiliate with a purchase * Affiliate Rates: Affiliate-specific rates and eligible products which this affiliate can promote 2. The second tab displays a table of recent referrals generated by this affiliate 3. The third tab displays a table of recent payouts associated with this affiliate 4. The fourth and fifth tab display the affiliate's total earnings, and the amount of earnings which have not been paid yet. *** ## Frequently Asked Questions [#frequently-asked-questions] ### Can I disable accepted affiliates at any time? [#can-i-disable-accepted-affiliates-at-any-time] Yes, you can always disable affiliates with an "accepted" status [in the Affiliates dashboard](https://sell.app/dashboard/affiliates). A disabled affiliate can be re-activated via the dashboard as well. ### Can I modify the "Affiliate Approval" toggle at any time? [#can-i-modify-the-affiliate-approval-toggle-at-any-time] Yes, all your store's affiliate program settings can be modified at any time. # Managing Referrals (/docs/managing-referrals) Referrals can be managed at any time [in the Referrals dashboard](https://sell.app/dashboard/affiliates/referrals) *** ## Referrals Dashboard [#referrals-dashboard] [The Referrals dashboard](https://sell.app/dashboard/affiliates/referrals) provides a general overview of all referrals generated by affiliates. The dashboard also helps you perform the following quick actions: 1. Accept, review, or reject a referral 2. Opening a specific referral's slide-over *** ## Referral Slide-over [#referral-slide-over] The referral slide-over provides a breakdown of the referral created. The first part displays a breakdown of how the affiliate's commission is calculated. The second part displays a timeline of the referral, including when it was created, reviewed, and accepted. The slide-over also displays a number of quick actions: updating a referral's status, and displaying the associated invoice or affiliate. *** ## Frequently Asked Questions [#frequently-asked-questions] ### Can I update a previously rejected referral to an accepted status? [#can-i-update-a-previously-rejected-referral-to-an-accepted-status] No, once you reject a referral, it is no longer possible to update its status to accepted at a later stage. As such, we only advise rejecting a referral if and when you are certain that you don't want to update the status at a later date. Should you wish to keep the optionality, we advise changing the status to "In Review" instead # Trustpilot (/docs/trustpilot) With SellApp, you can automatically invite your customers to leave a review on your Trustpilot page. *** ## Setup Guide [#setup-guide] To start, you'd want to head over to [your trustpilot invitation settings by clicking here](https://businessapp.b2b.trustpilot.com/invitations/eti-settings). 1. On this page you'll find a unique Trustpilot email address. Click the "Copy email address" 2. With the copied email address, head on over to [your SellApp storefront settings by clicking here](https://sell.app/dashboard/settings?settings=general) and paste the unique email you copied in step 1 into the "Trustpilot Email" input, then click the "Save" button That's it! Now, whenever a customer makes a purchase, they will automatically receive an email from Trustpilot inviting them to place a review on your Trustpilot page. ### How it works [#how-it-works] Whenever a sale is made, your Trustpilot email is BCC'ed into the email that is sent to your customer. This BCC'ed Trustpilot email is then utilized by Trustpilot to automatically send out an invitation to the customer's email to leave a review. The limitation lies in the number of invites you can send out. For non-paying Trustpilot members, you will only be able to send out 100 invitations per month after which the invites stop being sent out. For most stores this is plenty enough, but for others it might make sense to purchase a plan. For more info, head on over to Trustpilot's [automatic feedback service (AFS) page by clicking here](https://businessapp.b2b.trustpilot.com/invitations/eti-settings). # Notifications (/docs/creating-notifications) You may find yourself wanting to receive a notification when some specific event happens on your SellApp store, such as when an order gets completed, a support ticket is created, or another type of event. Sample Discord notification Currently, you can create Discord notifications and email notifications. More notification channels will be added in the future. *** ## Setting up Discord channel notifications [#setting-up-discord-channel-notifications] 1. **Get yourself a webhook URL from your Discord server** 1. Right click the Discord channel where you'd like to receive notifications and click "Edit Channel" 2. Navigate to "Integrations" and click "Create Webhook" 3. Click "Copy Webhook URL" and save this somewhere, you're going to paste this in step 2.2 2. **Add Discord webhook URL to SellApp** 1. Navigate [to your SellApp storefront notifications](https://sell.app/dashboard/settings?settings=notifications) and click "Add Channel" 2. Select "Discord" as the channel type, add a reference you can remember for the channel name, and paste the webhook URL you got from step 1.1. in the "Webhook Url" input field. 3. Select the notifications you'd like to receive on your channel. For example, if you only want to receive completed order notifications, select "Order Completed" here. Finally, click "Save" to complete the setup. There you go! Now, specified notifications are sent near-instantly to the Discord channel you entered. *** ## Setting up email notifications [#setting-up-email-notifications] 1. Navigate [to your SellApp storefront notifications](https://sell.app/dashboard/settings?settings=notifications) and click "Add Channel" 2. Select "Email" as the channel type and enter the email address in the "Email" input field. 3. Select the notifications you'd like to receive to your email. For example, if you only want to receive completed order notifications, select "Order Completed" here. Finally, click "Save" to complete the setup. There you go! Now, specified notifications are sent near-instantly to the email address you entered. # Subscriptions (/docs/creating-subscriptions) With SellApp, you can create products with recurring prices. This means that customers will be charged at a predefined period of time, for example: **daily**, **weekly**, **monthly** This pricing type is ideal for digital products which require continuous maintenance and effort, with a good example being a SaaS software that is periodically updated and maintaned. Let's dive into how you can create a product with a recurring subscription. Currently, you can only create subscriptions after you have [enabled Stripe](/stripe). *** ## Creating a subscription product [#creating-a-subscription-product] * Start by creating or editing a product [in the product dashboard](https://sell.app/dashboard/listings). * In the "Pricing" section, select "Subscription" as the pricing type. * Once you've enabled the subscription pricing type, you can proceed to set your price and duration for the subscription. * Here's a preview of what that looks like: Creating a subscription * Specify any kind of subscription duration you'd like. Charge customers every X days, weeks, or months. The highest duration supported is currently 1 year, so you cannot set the duration to be more than a year. * Once saved, customers can purchase this newly created subscription product. * We'll handle setting up the subscription and notifying the customer if a payment happens to fail. * You'll be able to see how many subscriptions are active and how many payments have been made in your [SellApp subscription dashboard](https://sell.app/dashboard/subscriptions) # Discord roling (/docs/discord-roling) You may find yourself wanting to have your customers join your Discord server and optionally getting a role post-purchase. With SellApp, this is possible by using your own Discord bot. *** ## Video Guide [#video-guide] We've created a step-by-step video guide that will help you set up and configure your Discord bot correctly. If you prefer a text-based guide, please proceed to scroll down. *** ## Setup and configure bot [#setup-and-configure-bot] To start setting up the roling functionality, you'll want to create a Discord bot [in the Discord bot dashboard](https://discord.com/developers/applications) 1. Click "New Application" at the top right hand side, 2. Once your bot is created, retrieve your client ID and secret [from here](https://discord.com/developers/applications/\{botidhere}/oauth2/general), then add the following three redirect URL's on the same page: * [https://sell.app/discord/connect-account](https://sell.app/discord/connect-account) * [https://sell.app/discord/connect-customer](https://sell.app/discord/connect-customer) * [https://sell.app/discord/connect-guild](https://sell.app/discord/connect-guild) 3. Finally, retrieve your bot token [from here](https://discord.com/developers/applications/\{botidhere}/bot) Once done, paste the client ID, client secret, and bot token in [your SellApp settings](https://sell.app/dashboard/settings?settings=other) and save. *** ## Add account and server [#add-account-and-server] Now that your bot credentials have been set and saved, the next step is to add your account and server. 1. Click "Add Account" in [your SellApp settings](https://sell.app/dashboard/settings?settings=other). You will be redirected to Discord, grant the permissions and you will be redirected back to SellApp. Make sure to edit your Discord server and put the bot's role above the role(s) you are trying to grant. If you don't do so, the bot will not be able to assign the role(s) to the customer's Discord account after a successful purchase. 2. Click the three dots at the end of your account name and click the "Show" option. Click the "+" icon next to "Guilds". You will be redirected to Discord, select the server you want your customers to be added to and optionally roled on. 3. That's all done. You can now see the "Community" option when creating/editing a product and specify which server and role the customer gets, plus an option to make Discord authorization mandatory or not. You will also be able to update your products in bulk. Select the checkbox at the left hand side on [your products dashboard](https://sell.app/dashboard/listings) -> "Select All" -> "Bulk Update" -> "Discord Data" Happy selling! # Payment fee/discount (/docs/discounting-payment-methods) Offering a discount or adding a fee to a specific payment method is as easy as modifying the payment method in question. **Here's how to do so:** 1. Go to your [store's payment settings](https://sell.app/dashboard/settings?settings=payment) 2. For the payment method in question, click its name so its respective modal appears. 3. Enter the discount or fee in the "Discount or fee" input field, then click the "Save" button to the right of the input field. * To add a discount, enter a positive value. For example, for a 10% discount, enter: 10 * To add a fee, enter a negative value. For example, for a 5% fee, enter: -5 That's all done! The payment method in question will now have a fee/discount applied, which will be visible to the end-user during the checkout process. Happy selling! # Embedding products (/docs/embedding-products) At times, you may want to embed products into a custom-built site of your own, but you don't want to go through the hassle of writing code and/or interacting with our API. Toggle Embed In that event, we offer a seamless embed modal that can be displayed within your own site, and lets visitors make purchases without leaving your website or be redirected to a SellApp product page. Let's dive into how you can do so. *** ## Generating embed code [#generating-embed-code] To start generating embed code, you'll want to navigate [to your products dashboard](https://sell.app/dashboard/listings) 1. For the relevant product(s), toggle them on the left hand side next to the product's title 2. Once you've toggled all of the products you'd like to embed, select the "Generate embed code" option in the navigation bar. Here's how that looks 3. A modal will pop up with a HTML file. Here's what you'll want to do: 1. Copy the `` and place it in your site's `` section 2. Copy the `` and place it right before your site's closing `` section 3. Copy the button(s) and place it in the relevant area where your customer will click Once done, save your site's code and you'll be good to go. Now, when a visitor clicks on the button that you've pasted, our embed modal will appear and seamlessly guide the visitor through the purchase process. *** ## Embed variables [#embed-variables] Each embed button can have unique variables set. A list 1. `data-sell-darkmode` Whether the embed is shown in dark mode or light mode. By default, this is set to `false`. Setting the value to `true` will change the embed's design to dark mode. 2. `data-sell-theme` Pass a 6-digit HEX color such as `#FFFFFF` to slightly style the embed. 3. `data-sell-variant` In the event your product has multiple variants and you want to display a specific variant immediately. 4. `data-sell-coupon` Should you wish to automatically apply a coupon code, enter the code here. 5. `data-sell-quantity` To immediately set the purchase quantity, pass a number in this variable. 6. `data-sell-email` Already know the customer's email? Pre-fill it by entering the email here. 7. `data-sell-extra` If the product is priced as "Pay What You Want", you can specify an amount in advance here. Especially useful for wallet top-ups, for example. 8. `data-sell-affiliate` If you want to attribute a sale to an affiliate via the embed, insert the affiliate's identifier in this variable to do so. 9. `data-sell-payment_method` Pre-fill the payment method so the customer doesn't need to select it manually Looking for a variable that's not in the above list? Send us a message by contacting us via live chat *(found at the bottom right hand corner of this page)* *** ## Checkout example [#checkout-example] You own a store where customers can purchase credits to use your digital product. You prefer the look of dark mode. Your customers are authenticated, so you are aware of their email address. One customer, John Doe with email address `johndoe@example.com`, would like to purchase credits for a specific version of your digital product, which happens to be a variant with value `789`. John intends to top up with 10 credits, so you know the quantity too. Since he is a recurring customer, you would like to give him 10% off with coupon `amazingdiscount`. With all of the above points in mind, the URL crafted would result in the following: `` These variables should help streamline your customer's checkout experience and introduce less friction, all in all resulting in a better converting checkout experience. # Linking a custom domain (/docs/linking-custom-domain) By default, your SellApp storefront comes with a free subdomain, for example: **admin.sell.app**. However, you can also add a custom domain of your own, for example: **admin.com** **It's completely free to add a custom domain to your SellApp storefront** *** ## **Video Guide: Root Domain** [#video-guide-root-domain] In the following video guide we visually show you how to configure a **root** domain such as **example.com**, **bob.com**, or **varrock.osrs**. For you to follow this guide step-by-step, you will want to change your domain's DNS provider to Cloudflare. It's free and easy to do so. If you prefer a text-based guide, please proceed to scroll down to "Step 1". *** ## **Video Guide: Subdomain** [#video-guide-subdomain] In the following video guide we visually show you how to configure a **subdomain** such as **[www.example.com](http://www.example.com)**, **me.bob.com**, or **teleport.varrock.osrs**. For you to follow this guide step-by-step, you will want to change your domain's DNS provider to Cloudflare. It's free and easy to do so. If you prefer a text-based guide, please proceed to scroll down to "Step 1". *** ## **Step 1: Buy a custom domain** [#step-1-buy-a-custom-domain] *If you've already purchased or own a domain name, skip ahead to Step 2.* If you don't already have a custom domain, you're going to want to buy one. We strongly suggest going with [Cloudflare](https://www.cloudflare.com) as they're easy, affordable, and have a best-in-class DNS system that comes with DDoS protection out of the box. *** ## **Step 2: Add your custom domain to SellApp** [#step-2-add-your-custom-domain-to-sellapp] To set up your custom domain, **[navigate to your storefront's personalization settings](https://sell.app/dashboard/settings?settings=personalization)** -> **Custom Domain** and enter the custom domain you'd like your SellApp storefront to live on. You can specify any domain you'd like: 1. A root domain such as **example.com**, **bob.com**, or **varrock.osrs** 2. A subdomain such as **[www.example.com](http://www.example.com)**, **me.bob.com**, or **teleport.varrock.osrs** *** ## **Step 3: Add the CNAME and TXT record to your custom domain's DNS settings** [#step-3-add-the-cname-and-txt-record-to-your-custom-domains-dns-settings] In your domain's DNS settings, create two **CNAME records** pointing your (sub)domain to **sell-beacon.net** These are the values for the record you should add: 1. **CNAME Record 1** * **Host/Name:** \* * **Value**/**Points To:** sell-beacon.net 2. **CNAME Record 2** * **Host/Name:** * **@** — If you'd like to link to your root domain *(as mentioned in point 1 above)*. * **www**, or **me**, or **teleport** — If you'd like to link to your subdomain *(as mentioned in point 2 above)*. * **Value**/**Points To:** sell-beacon.net Some DNS providers require a period at the end of the domain that's being pointed to. In which case, you'll want to enter: sell-beacon.net. 3. **TXT Record** * If your DNS provider is Cloudflare, you don't need to add a TXT record. The domain will be verified in a few moments and you'll be good to go. If your DNS provider is different *(i.e. NameCheap, GoDaddy, etc.)*, then you'll need to add an **\_acme-challenge** TXT record * If you are linking a root domain * **Host/Name:** \_acme-challenge * **Value/Points To:** The random string of characters shown on the SellApp page * If you are linking a subdomain * **Host/Name:** **\_acme-challenge.www** or **\_acme-challenge.me** or **\_acme-challenge.teleport** * **Value/Points To:** The random string of characters shown on the SellApp page At times, the TXT record is not required, so if it doesn't appear you should be OK to proceed with the rest of the setup steps. Once done, let the page finish loading on SellApp. Usually this takes less than a few minutes once the above values have been set, however, with some providers it may take longer. *** ## **Support: My custom domain is not being verified** [#support-my-custom-domain-is-not-being-verified] Please make sure your DNS records have the following values: 1. 1X CNAME value pointing from host \* to value **sell-beacon.net** 2. 1X CNAME value pointing from host **@** to value **sell-beacon.net** (**www**, or **me**, or **teleport** if it's a subdomain ) 3. 1X TXT host pointing from just **\_acme-challenge** to value being the random string of characters shown on the SellApp page (**\_acme-challenge.www**, or **\_acme-challenge.me**, or **\_acme-challenge.teleport** in case of subdomain) Once done, go to the SellApp side and let it finish loading. This should take a few minutes once the above has been completed. Should things not finish loading on the SellApp side in an hour after the changes have been made, it might be an issue with your DNS provider. As a workaround, we advise switching from your current DNS provider to Cloudflare. Switching is free and easy to do, and should take no more than 5 minutes. # Post-purchase redirect (/docs/post-purchase-redirect) You might need to redirect a customer to an URL of your choosing once they have made payment and completed their purchase. With SellApp, you can do so as follows: Create/Edit the relevant product -> navigate to the "Customization" section -> enter the URL in the "redirect URL" input field. Once done and saved, customers will be redirected to the URL you've entered. If you've appended the URL with any dynamic variables, these will automatically be inserted before redirecting your customer. *** ## Dynamic Redirect Variables [#dynamic-redirect-variables] At present, the following dynamic redirect variables are supported: * `[customer_email]` The customer's email address * `[order_id]` The order ID associated with the purchase Looking for a variable that's not in the above list? Send us a message by contacting us via live chat *(found at the bottom right hand corner of this page)* ### Redirect Example [#redirect-example] You have a coding course. You want to automatically check whether a customer has paid for your course before activating their account and displaying the course. With redirect URL's and dynamic variables, you can verify whether the customer's order ID and email address correspond with a paid invoice, for example by pinging our API endpoint or storing incoming webhook data with our `order completed` webhooks, and let them create an account or activate their existing account. The redirect URL would be: `https://my-coding-course.com/purchase-completed?email=[customer_email]&orderId=[order_id]` # Pre-fill checkout info (/docs/pre-fill-info) At times, you might find yourself wanting to pre-fill the product page with a customer's checkout information. A good example is when you want to redirect a customer from your own project to the checkout page in order to reduce the risk of mistakes during checkout. With SellApp, you can simply do so by appending the URL with the appropriate query string variables. *** ## Supported variables [#supported-variables] At present, the following query string variables are supported: * `coupon` Any coupon code you would like to have automatically applied * `email` The customer's email address * `payment_method` The payment method with which the customer will pay * `quantity` Product quantity which the customer will be purchasing * `variant` If there is more than one variant, you can specify a specific variant ID * `additional-[key]` The key and value of a checkout info field *(you can find the key when creating/editing a checkout info field)* Looking for a variable that's not in the above list? Send us a message by contacting us via live chat *(found at the bottom right hand corner of this page)* ### Checkout Example [#checkout-example] Your website is all about rare game skins. Logged in customers can browse and purchase these game skins. One of your customers, John Doe, wants to purchase one of these skins and clicks on it to be redirected to the SellApp checkout page. Rather than sending John to the default URL `https://example.sell.app/product/rare-game-skin` you could modify the URL with the customer's information you already have on your end. Say they have a preferred payment method, are a recurring customer eligible for a 5% discount coupon, and they modified the quantity input to 2 rare game skins. Additionally, you have a custom checkout info "text" field that asks for the customer's in-game username. You could then use this information and automatically modify the URL with the new query string variables. The final URL would be: `https://example.sell.app/product/rare-game-skin?coupon=LOYAL5&email=john_doe@example.com&payment_method=STRIPE&quantity=2&additional-4124bc0a9335c27f086f24ba207a4912=JohnDoe123` *** ## Embed modal variables [#embed-modal-variables] If you are utilizing the embed modal, you can also pass along variables before initiating the modal. For more info, [click here to open the relevant documentation](/embedding-products#embed-variables) # Dynamic webhook (/docs/setting-up-dynamic-webhook) SellApp's dynamic webhook sends a `POST` requests to your webhook URL that you enter while creating a product. The `POST` request is sent as a `JSON object` when a customer successfully completes a payment, and contains all the relevant order data so your webhook can process the order programmatically. Whichever value you return to us as a response to the above `POST` request, we pass along to the customer. SellApp only supports `HTTPS` webhook endpoints for security purposes. *** ## **Generating webhook secret** [#generating-webhook-secret] Before proceeding, we strongly advise creating a webhook secret that you'll want to be using to verify and validate incoming webhook requests as legitimate. If you don't do so, a malicious person could spoof requests and make it look like we're sending them, thus possibly resulting in your stock being drained. Here's how to create a webhook secret: 1. Navigate [to your store's developers settings](https://sell.app/dashboard/settings?settings=developers) 2. Click "New Secret" in the "Webhook secret" section. 3. Once a secret is generated, click "Save" in order to save the newly generated webhook secret. *** ## **Validating signed webhooks** [#validating-signed-webhooks] To verify the authenticity of webhook calls sent to your dynamic webhook endpoint, SellApp sends a HMAC signature that is comprised of the JSON encoded request body and your generated webhook secret. SellApp uses the `sha256` hash function Here is a validation example for the dynamic webhook endpoint in PHP: ```js $secret = "webhook-secret-here"; // the webhook secret you generated on SellApp $signature = $_SERVER['HTTP_SIGNATURE']; // Retrieving the HMAC signature sent by our servers $computedSignature = hash_hmac('sha256', file_get_contents('php://input'), $secret); // Validating the HMAC signature sent by our servers if (hash_equals($computedSignature, $signature)) { // The signature sent by the webhook is valid, we can process the order } else { // The signature is invalid, this means something in the configuration is wrong or the webhook was not sent by SellApp } ``` Sending a test dynamic webhook is only for the purpose of checking whether your endpoint is correct. The test sends mock data which is not representative for production webhooks. If you have set a webhook secret, test dynamic webhooks do send the secret in the header under the variable "signature" Once this has been set up and configured correctly, you're all good to go! Whenever a new order gets created, we'll be pinging your dynamic endpoint URL you entered while creating the product, then pass along your webhook's response to the customer. Happy selling! # Stories (/docs/stories) You've probably come across the "Stories" concept across various social media platforms *(like Instagram!)*: Stories are a powerful feature, and within SellApp, it is the key to help turn your store into a truly interactive experiences. Story example As a result, your store can experience a considerable lift in conversion rate. Now, instead of browsing various pages, customers can: 1. Open a story to view an image/video about a product being used 2. Click on a product link **directly within the story** to immediately navigate to the product page *(or display the product's embed modal)* 3. Do the same as above for various other stories. You can have a story for your products, customer reviews, upcoming product drops, and so on *** ## Creating Stories [#creating-stories] Stories in Dashboard 1. Navigate to [the Stories dashboard by clicking here](https://sell.app/dashboard/stories). 2. Click on the "New Story" button to create your first story 3. Upload up to 30 media files to your story. Each media file: 1. Will be played one after the other 2. Can be linked to a unique product 3. Can have a different "Call to action" text 4. You can sort media files to your liking, the story will play the media in the order you've sorted 5. You can also sort each story to your liking. The order in which you sort a story will be shown when you create the Stories block in the builder. That's it! You've now created one or multiple Stories. Now, let's head on over to the builder to display your Stories block. *** ## Displaying Stories [#displaying-stories] Stories in Builder 1. Navigate to [the storefront builder by clicking here](https://builder.sell.app). 2. Click on the relevant section within which you want to add the "Stories" block 3. Click the "Add block" button in the left sidebar, then select the "Stories" option 4. The "Stories" block will be inserted into the section. Drag and drop it to whichever place you prefer, the whole section is your canvas. *(Don't forget to check the mobile version of your page once done)* 5. If required, you can configure which story/stories to display by clicking on the "Stories" block and doing so in the left sidebar's "Stories Settings" Once done, click the "Publish" button at the top right to publish your store's changes. You can then visit your site to see the stories block and interact with. # FAQ (/docs/faq) This page covers the most common questions that are not answered elsewhere in the documentation. ## General [#general] ### How do I allow customers using a VPN to make purchases? [#how-do-i-allow-customers-using-a-vpn-to-make-purchases] The VPN check helps protect your store from fraud. If you want to allow VPN-based purchases: 1. Open [your storefront payment settings](https://sell.app/dashboard/settings?settings=payment). 2. Enable **Allow VPN purchases**. 3. Save your changes. ### How do I change my subdomain? [#how-do-i-change-my-subdomain] Store subdomains cannot currently be changed. ### How do I appeal negative feedback? [#how-do-i-appeal-negative-feedback] Feedback cannot currently be appealed. ### My store got banned. Can I recover my products or data? [#my-store-got-banned-can-i-recover-my-products-or-data] Storefronts that violate SellApp rules are reviewed and banned by the internal risk team. Associated products, files, and stock are purged. SellApp does not restore or redistribute that content. ## Products [#products] ### How do I restock my product? [#how-do-i-restock-my-product] 1. Open [the products dashboard](https://sell.app/dashboard/listings). 2. Click the relevant product. 3. Go to the **Content** section and add more stock. 4. Save the product. ### How do I sell serials, codes, keys, or licenses one-by-one? [#how-do-i-sell-serials-codes-keys-or-licenses-one-by-one] 1. Open [the products dashboard](https://sell.app/dashboard/listings). 2. Create a new product or edit an existing one. 3. In the **Content** section, select **Codes & Serials**. 4. Enter your stock in the **Saved Serials** field. 5. Set the correct stock delimiter if needed. 6. Save the product. ### How do I sell a product for under a dollar? [#how-do-i-sell-a-product-for-under-a-dollar] Payment providers typically require the total order value to be at least one dollar. The usual workaround is to increase the minimum quantity so the total reaches that threshold. For example, if a product costs `$0.50`, set the minimum quantity to `2`. ## Orders [#orders] ### When should I mark an order as completed, and how do I do so? [#when-should-i-mark-an-order-as-completed-and-how-do-i-do-so] SellApp automatically detects successful payments and marks orders as completed. In most cases, you should not need to do this manually. If you still need to mark an order as completed: 1. Open [the orders dashboard](https://sell.app/dashboard/invoices). 2. Click the three-dot menu on the relevant order. 3. Select **Mark as...**. 4. Choose **Mark as completed** and process the change. ### What do pending, voided, and completed mean in my orders dashboard? [#what-do-pending-voided-and-completed-mean-in-my-orders-dashboard] * **Pending**: The order was started but not yet paid. * **Voided**: The order was not paid within 24 hours. * **Completed**: Payment was received and the order was processed successfully. # Features (/docs/features) Out of the box, SellApp includes a wide range of features to help you launch, sell, automate delivery, and grow your storefront. ## Core Platform Features [#core-platform-features] * Digital product delivery with automatic fulfillment * Built-in storefront hosting and customization * Multiple payment method integrations * Fraud protection and risk controls * Discounting, promotions, and pricing tools * Affiliate program support * Subscription and recurring billing support * Embedded checkout flows * API access for programmatic integrations ## What You Can Build [#what-you-can-build] With SellApp, you can sell software, ebooks, memberships, licenses, subscriptions, and other digital products through a single storefront. ## Related Guides [#related-guides] Create your store, connect payments, and publish products. Reach the support team when you need help with your store. Review common operational questions and answers. # Introduction (/docs) SellApp is a powerful ecommerce platform for digital products. With SellApp, you can quickly set up an online store and sell digital goods worldwide. Tens of thousands of merchants use SellApp to power their online businesses. SellApp dashboard ## Getting Started [#getting-started] SellApp is built for speed and simplicity. As your business grows, the platform grows with you. These pages cover the core setup flow, feature overview, support options, and common questions. Learn how to create your store, connect payments, and list your first products. Review the main platform capabilities available out of the box. Find the fastest way to contact the SellApp support team. Read the answers to common questions from merchants using SellApp. # Setup Guide (/docs/setup) Starting to sell on SellApp is simple. Most merchants can get through the initial setup in a few minutes: 1. Sign up. 2. Create your first store. 3. List your products. After that, customers can visit your store and make purchases while SellApp handles payment processing, delivery, and fraud protection. ## Signing Up [#signing-up] Create an account in seconds at [sell.app/register](https://sell.app/register). You can register with email details or sign up in one click with Google. ## Creating a Storefront [#creating-a-storefront] During sign-up, you can create a store immediately. We only ask for three pieces of information: 1. Store name 2. Store visibility 3. Store subdomain Store name and visibility can be updated later. Store subdomains cannot currently be changed. ## Listing Your Products [#listing-your-products] Before listing products, connect at least one payment method in your storefront settings or directly at [the payment settings page](https://sell.app/dashboard/settings?settings=payment). Customer payments are sent directly to your linked payment account. SellApp does not hold your funds. Once a payment method is connected, you can immediately start creating products. ## Welcome to the Community [#welcome-to-the-community] You now have the basics in place: an account, a storefront, and your first products. From here, you can expand with more payment methods, a custom storefront, promotions, and automation. If you need help at any point, use the live chat button on the site. # Support (/docs/support) Should you ever need help, the fastest way to contact SellApp is through live chat. # Live Chat [#live-chat] The fastest way to get in touch with the SellApp team is via live chat. ### For Customers [#for-customers] The SellApp support team cannot assist customers with purchase-related inquiries at this time. Please direct your questions to the store owner themselves. You can do so either by contacting them on any of the contact options on the store URL itself, or by creating a support ticket in the customer portal. ### For Creators [#for-creators] To get in touch, navigate to [the SellApp dashboard](https://sell.app/dashboard) and click on the "Support" button at the bottom left. Then, select "Live Chat". The live chat button will then appear at the bottom right of the page, please click it to open the live chat modal and initiate a chat session. ## Report Abuse [#report-abuse] If you come across a storefront that appears to violate platform rules, send an email to [report@sell.app](mailto:report@sell.app) with the store URL, relevant details, and screenshots if possible. Abuse reports are only handled through email. Do not send them through social media or live chat. # Introduction (/docs/storefront-builder-introduction) The SellApp storefront builder gives you full control over your storefront's design and makes it possible to customize your storefront to your liking. We have created the storefront builder with ease and simplicity in mind. You can utilize the builder without touching any code, and design your store with an easy and seamless drag & drop interface. To get started with the builder, you will want to click the "Store Builder" button in the sidebar of the SellApp dashboard. *** ## The builder explained [#the-builder-explained]