Shopify

Deducto's Shopify integration runs through the Deducto embedded app inside Shopify Admin. The embedded app handles store linking, plan selection, Shopify billing approval, and ongoing plan changes. Shopify is the billing authority for the project subscription, including any usage-based charges.

Use this guide when you want to install Deducto on a Shopify store, manage an existing Shopify-linked Deducto project, or enable Deducto in your storefront.

If your store is already linked, you can jump straight to Managing plans, Enabling Deducto in your storefront, or Recovery actions.

Plans and pricing

The plan options shown in the embedded app:

  • Free: $0/month, 1,000 included API requests, 1 user, 3 active promotions
  • Lite: $99/month, 20,000 included API requests, 5 users, 10 active promotions per project
  • Pro: $299/month, 100,000 included API requests, 20 users, 30 active promotions per project

Each Shopify store has its own Shopify-billed subscription. A Deducto account can hold more than one Shopify store; each store carries its own plan and entitlements.

Usage billing

Each plan includes a monthly API request allowance. These API requests are used to evaluate promotions applicable for a user's given cart state. Once usage exceeds the included allowance for the billing period, additional requests are billed against the usage cap you approved or set in Shopify Admin.

You can view your API usage for the billing period in the Deducto Dashboard. Shopify itself may also notify you and prompt you to approve a higher cap.

Subscription and usage charges appear on your Shopify billing statements at Settings -> Billing inside Shopify Admin. See Billing Overview for the wider billing picture.

First-time onboarding

The embedded app walks you through the full first-time setup.

1. Install and open the Deducto app

  1. From the Shopify App Store, install the Deducto app to your store.
  2. Open the Deducto app from Shopify Admin. The embedded app loads inside Shopify Admin and shows the new onboarding flow.

2. Choose your Deducto region

Select the region where your Deducto account and data should live:

  • Asia Pacific
  • EU
  • US East
  • US West

The region cannot be changed later, so pick the one closest to your store and shoppers.

3. Choose new or existing Deducto account

  • I'm new to Deducto creates a new Deducto account during onboarding.
  • I have a Deducto account lets you supply an existing Deducto account ID so the Shopify store is added to that account instead.

If you choose the existing path, enter the Deducto account ID. You can find it in the Deducto Dashboard for the account you want to link to.

4. Choose a Shopify plan

Select a plan card. See Plans and pricing above for current values.

5. Confirm plan

Click Confirm Plan.

  • For a Free plan, no Shopify billing approval is required. The embedded app transitions directly to the Start Integration step.
  • For Lite or Pro, Shopify opens its native subscription approval screen. Approve the recurring charge and the usage cap. Shopify then returns you to the embedded app.

6. Start integration

Back in the embedded app after Shopify approval, click Start Integration. Deducto confirms that the Shopify subscription is active and begins setting up the integration in the background.

This typically takes one to two minutes. The embedded app shows a progress indicator and waits for setup to finish. Stay on the page during this step.

7. Finalise in Deducto

When setup completes, the embedded app shows a Finalise in Deducto button along with a one-time linking code.

Click Finalise in Deducto to open the Deducto Dashboard. The linking code is included in the link, so you usually do not need to copy it manually. Sign up (or sign in) using your preferred provider, then complete the linking step. Deducto attaches the Shopify-created Deducto account to your user account.

The linking code is valid for 30 days. If it expires before you use it, contact support to issue a new one.

8. Ready

When you return to the embedded app, the launcher card should now update and show:

  • a Store linked to Deducto badge
  • the Deducto project ID
  • current plan details
  • buttons to Open Deducto Project, Manage Plan, and Reset Shopify Link

You can now proceed to Enabling Deducto in your storefront to enable Deducto in your online store theme.

Enabling Deducto in your storefront

After onboarding completes, enable Deducto in your Shopify theme so the storefront can submit coupon codes and react to promotion evaluations.

Theme app block and embed

  1. In Shopify Admin, go to Online Store under Sales Channels, then select Themes.
  2. Click Customize on your active theme to open the Theme Editor.
  3. Use the dropdown in the top menu bar to select the Cart page. In the left-hand Sections panel under Template -> Items, click the + icon and choose Deducto Coupon Code Form under Apps.
  4. (Optional) Select the Deducto Coupon Code Form block and adjust fields in the right-hand panel to edit display messages or styles.
  5. Click the App embeds icon near the top left corner of the editor and enable Deducto Cart Observer from the list.
  6. Click Save in the top right corner to apply the changes to your theme.

Stores using a cart drawer

If your store uses a cart drawer instead of a dedicated cart page, you may need to add the Deducto coupon form container to the cart drawer template manually.

Warning

The following steps require developer experience. Make sure you understand the instructions fully before making changes, or consult a developer. Always test changes in a development store first.

  1. In Shopify Admin, go to Online Store under Sales Channels, then select Themes.
  2. Click the three dots next to the Customize button and select Edit Code to access the theme code editor.
  3. Find your cart drawer snippet, typically found in /snippets/cart-drawer.liquid.
  4. Find the </cart-drawer-items> closing tag and paste the activation code snippet below immediately after it.
  5. (Optional) Adjust the values in the activation code snippet to customise the message text or styling as needed.
<div
  id="deducto-cart-drawer-coupon-code-form-container"
  data-form-class="replace-with-your-class--form"
  data-form-css="display: flex; flex-direction: column; gap: 10px; width: 100%;"
  data-form-label="Enter Coupon Code:"
  data-form-label-class="replace-with-your-class--label"
  data-form-label-css="display: block; margin-bottom: 2px;"
  data-input-group-class="replace-with-your-class--input-group"
  data-input-group-css="display: flex; align-items: center; gap: 8px; width: 100%;"
  data-form-placeholder-value="Separate multiple codes by comma"
  data-form-input-class="replace-with-your-class--input"
  data-form-input-css="flex-grow: 1; min-height: 36px; margin-right: 8px; border: 1px solid #000; padding: 8px; font-size: 1.5rem; border-radius: 2px; outline: none"
  data-apply-button-label="Apply"
  data-apply-button-class="replace-with-your-class--button"
  data-apply-button-css="background-color: #000; color: #fff; padding: 8px 20px; min-height: 36px; min-width: 90px; font-size: 1.5rem; border: none; cursor: pointer; border-radius: 2px; text-align: center; display: inline-block"
  data-tag-container-class="replace-with-your-class--tag-container"
  data-tag-container-css="display: flex; justify-content: left; align-items: center; flex-wrap: wrap; gap: 4px"
  data-tag-class="replace-with-your-class--tag"
  data-tag-css="margin: 0px 4px 0px 0px; padding: 4px 8px; border: 1px solid #ddd; border-radius: 5px; display: inline-block"
  data-message-unrecognised="Some of the coupon codes entered are not recognised."
  data-error-container-class="replace-with-your-class--error-container"
  data-error-container-css="width: 100%; margin-bottom: 4px;"
  data-error-message-class="replace-with-your-class--error-message"
  data-error-message-css="color: rgb(217, 28, 28);"
>
  <div id="deducto-cart-drawer-coupon-code-form-loading-overlay" class="deducto-loading-overlay" aria-hidden="true"></div>
  <form id="deducto-cart-drawer-coupon-code-form" style="min-height: 90px;"></form>
</div>

Checkout UI Extensions (Plus stores only)

If your store is on a Shopify Plus plan, you can take these additional steps to add the Deducto Coupon Code Form component and other functionality to the checkout page:

  1. In Shopify Admin, go to Settings and select Checkout.
  2. Click Customize to open the checkout editor.
  3. Click the Apps icon in the left panel, then click the + icon next to deducto-checkout-ui-extension, and then select Checkout under Add to.
  4. (Optional) Adjust the values in the Deducto Checkout UI Extension settings to customise the message text or styling as needed.
  5. Click Save in the top right corner and exit the checkout editor.

Congratulations! You've successfully added Deducto to your Shopify store. Create a promotion in the Deducto Dashboard and test it out in your storefront.

Using Shopify metafields as custom product attributes

Deducto can use Shopify product metafields as custom attributes when building promotion logic. For background on custom attributes and how mappings work in Deducto, see Custom Attributes and Attribute Mapping.

Deducto uses the available filters from the Search & Discovery app to gather the list of product metafields when validating promotions. Any product metafield you want to use must be configured as a filter in that app – if a metafield is not exposed through Search & Discovery filters, Deducto cannot reliably use it for Shopify product attribute matching.

  1. Create or identify the Shopify product metafield you want to use.
  2. Add that metafield as a filter in Shopify's Search & Discovery app.
  3. Find the metafield's key in Settings -> Custom data -> Products in your Shopify Admin. Open a definition to see its key in a field below the name. Keys usually look like custom.some_metafield.
  4. Copy the full metafield key, including both the namespace and key.
  5. In Deducto Dashboard, in Project Settings, paste that full key into the mapping field for the corresponding custom attribute.

Managing plans

Once your store is in the ready state, the embedded app shows a Manage Plan action.

Upgrading

You want to move your store to a higher Deducto plan.

  1. In the embedded app, click Manage Plan and select the target plan.
  2. Click Confirm Plan Change. Shopify opens its subscription approval screen.
  3. Approve the new charge in Shopify.
  4. When Shopify returns you to the embedded app, click Finalise Plan Change to apply the change in Deducto.

New plan entitlements (request allowance, users, active promotions) take effect after the upgrade is finalised.

Downgrading

You want to move your store to a lower Deducto plan.

  1. In the embedded app, click Manage Plan and select the target plan.
  2. Click Confirm Plan Change.
  3. Approve any new charge in Shopify if prompted and click Finalise Plan Change.

Downgrades are scheduled for the end of the current billing period rather than applied immediately. The current plan stays active until that date. A downgrade to the Free plan does not require a new subscription charge approval.

Cancelling a pending plan change

You want to cancel a plan change that is waiting on your approval, or clear a previous change that did not complete.

In the embedded app, click Cancel Approval Request (for an upgrade awaiting subscription approval) or Clear Pending Change (for a change that started but did not finish). Clearing the pending state lets you start a new change.

Recovery actions

Re-running onboarding for a store

You want to onboard the store from scratch – for example, the local Shopify-side state is wrong, or you need to re-link this store to a different Deducto account.

In the embedded app, click Reset Shopify Link. This clears the Deducto-namespaced metafields on this Shopify store, and the embedded app shows the new onboarding flow again.

Reset Shopify Link only affects the local Shopify-side link. It does not delete your Deducto account, project, or promotions. If you only need Deducto's records re-written to the store, use the repair action below instead.

See also