> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tagada.io/llms.txt
> Use this file to discover all available pages before exploring further.

# WooCommerce checkout plugins

> Three official WordPress plugins, three payment flows. Pick one. Never install two.

TagadaPay ships **three WooCommerce plugins**. They are not interchangeable. Each one owns a different part of checkout.

<Warning>
  Install **exactly one**. `tagada-checkout` hijacks `/checkout` before any Woo gateway can run. If it is active, the gateway plugin never sees the order.
</Warning>

## The three plugins

|                                     | **1. Full checkout redirect**                              | **2. Hosted payment gateway**                             | **3. Inline card**                                                  |
| ----------------------------------- | ---------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------- |
| **Zip / plugin**                    | `tagada-checkout.zip` → `tagada-checkout`                  | `tagada-gateway.zip` → `tagada-gateway`                   | same `tagada-gateway` **1.1+**, enable **Tagada Pay (Inline card)** |
| **CRM name**                        | Full Checkout Redirect                                     | Payment Gateway                                           | Inline card                                                         |
| **Download**                        | Funnel editor → WooCommerce step                           | Funnel editor → WooCommerce step                          | **Integrations → WooCommerce**                                      |
| **Template**                        | `public/assets/php/woocommerce/tagada-checkout-plugin.php` | `public/assets/php/woocommerce/tagada-gateway-plugin.php` | `apps/woocommerce-gateway` (CRM zips `official-gateway`)            |
| **Who owns the cart**               | Woo, until checkout                                        | Woo                                                       | Woo                                                                 |
| **Who owns checkout UI**            | **Tagada funnel**                                          | Woo (address, shipping, tax)                              | Woo                                                                 |
| **Who owns the amount**             | Tagada catalogue + recon                                   | Tagada catalogue + `wc_total_reconciliation`              | **Woo order total**                                                 |
| **Card UI**                         | Tagada hosted page                                         | Tagada hosted page after Place order                      | Card fields **on** the Woo page                                     |
| **Needs a funnel step**             | Yes (baked into the zip)                                   | Yes (baked into the zip)                                  | No. Charge is `payments/process`                                    |
| **Tax / Kintsugi / Discount Rules** | Recalculated on Tagada                                     | Recalculated on Tagada                                    | Whatever Woo already put on the order                               |
| **Upsells / funnels**               | Yes                                                        | Limited (hosted pay page)                                 | No                                                                  |

```mermaid theme={null}
flowchart LR
  cart[Woo cart]
  cart --> A[1 tagada-checkout]
  cart --> B[2 tagada-gateway redirect]
  cart --> C[3 tagada_inline]
  A --> funnel[Tagada funnel checkout]
  B --> wooForm[Woo checkout form]
  wooForm --> hosted[Tagada hosted pay]
  C --> wooForm2[Woo checkout + card fields]
  wooForm2 --> process["payments/process Woo total"]
```

***

## 1. Full checkout redirect — `tagada-checkout`

Use this when Tagada must own the **whole** checkout: address, shipping, payment, upsells.

**Customer path**

1. Shopper adds products on Woo.
2. Checkout or Buy Now hits the plugin.
3. Browser goes to the Tagada funnel bound in the zip (`funnelId` + `stepId`).
4. Payment happens on Tagada. Order is pushed back to Woo.

**CRM**

Storefront → Funnels → WooCommerce step → **Download Redirect Plugin** (`format: 'plugin'`).

The zip is generated per store/funnel. Re-download after you change redirect-on-cart / redirect-on-product.

***

## 2. Hosted payment gateway — `tagada-gateway` (`tagada`)

Use this when the shopper must stay on **Woo checkout** for address and shipping, then jump to Tagada **only to pay**.

**Customer path**

1. Shopper fills Woo checkout (Woo shipping zones, Woo tax plugins).
2. They pick **Tagada Pay**.
3. Place order creates a Woo order and redirects to a Tagada hosted payment page.
4. The funnel ends on the Tagada thank-you page; the Woo order is confirmed server-side (webhook / CRM sync). If the shopper does come back to Woo with `?tgd_success=1`, the Woo thank-you page shows.

**Cart** — since plugin 1.1.6 (legacy gateway 1.0.3) the Woo cart is emptied server-side as soon as the order turns processing / completed, whether or not the shopper returns to the Woo site. Older builds only emptied it on the `tgd_success` return, so shoppers who stayed on the Tagada thank-you came back to a full cart — update the plugin from the CRM if merchants report that.

**Amount caveat**

Tagada re-prices from the synced catalogue and can add `wc_total_reconciliation`. Dynamic prices (Discount Rules Pro filters, theme sale filters) are **not** the Woo order total. That is a different bug from inline.

**CRM**

Same WooCommerce step → **Download Gateway Plugin** (`format: 'gateway'`).

Enable **Tagada Pay** under WooCommerce → Settings → Payments. Do not also enable Inline card.

***

## 3. Inline card — `tagada-gateway` 1.1+ (`tagada_inline`)

Use this when Woo must stay the **source of truth for the charged amount**. Card fields sit on the Woo page. The only redirect is 3-D Secure.

**Customer path**

1. Shopper fills Woo checkout + card fields.
2. Browser tokenizes with `@tagadapay/core-js`. It does **not** call `payments/process`.
3. Woo creates the order. PHP charges `amount = $order->get_total()` with an `Idempotency-Key`.
4. Success → **Payment successful** on checkout, then Woo thank-you. 3DS → PSP returns to the **live Woo checkout** (`?tgd_3ds=1`), not thank-you. Poll there, `payments/continue` only if still pending, show **Payment successful**, then thank-you. ATP may bounce via the proxy host first. Plugin **1.1.2+** injects Thumbmark and forwards the shopper UA / IP / fingerprint so that bounce works when checkout is on Woo, not Tagada. The shop host must be the cloaked original domain.

No Tagada checkout session. No funnel hops or upsells. Kintsugi / coupons / Discount Rules apply **if they already landed on the Woo order**.

**Install**

1. CRM → **Integrations → WooCommerce** → **Download Inline Plugin** (`format: 'inline'`). Store ID and environment are baked into the zip. Do not use the older **Download Gateway Plugin** 1.0.x zip (that file has no Inline method). This is not a funnel zip.
2. WordPress → Plugins → Upload → Activate. Deactivate `tagada-checkout` if it is on.
3. WooCommerce → Settings → Payments → enable **Tagada Pay (Inline card)** only.
4. Add a **CRM Access Token** once: Tagada **Settings → Access Tokens → Create Access Token**. The secret starts with `sk_crm_…` and is shown only at creation. This is not a Partner Hub processing key (`tp_sk_…`) and not a Stripe/NMI key. Optional payment flow id.

<Note>
  Enable one gateway id: `tagada` **or** `tagada_inline`. Works on classic `[woocommerce_checkout]` and Woo Block checkout.
</Note>

### Apple Pay (plugin 1.2.0+)

An Apple Pay button appears inside the Inline card method, above the card fields, on both classic and Block checkout. The shopper fills the Woo checkout as usual and taps Apple Pay instead of typing a card, so the amount charged is still the Woo order total.

It shows up only when all of these are true:

1. The shopper is on an Apple device with a card in Wallet. On every other browser nothing renders and the card fields behave exactly as before.
2. The store has Apple Pay enabled on the Tagada side, as a native Apple Pay integration.
3. **Tagada has registered the shop domain with Apple.** Ask your Tagada contact; there is nothing to do in your Apple developer account, and you do not need one. The plugin publishes Apple's verification file at `/.well-known/apple-developer-merchantid-domain-association` on your own domain by itself.

Turn it off under WooCommerce → Settings → Payments → Tagada Pay (Inline card) → **Apple Pay**, without touching the card fields.

<Warning>
  The Apple Pay and Google Pay entries in the **redirect** gateway's *Card brands* setting are decorative icons next to the payment method title. They do not enable a wallet payment. Only the Inline card gateway offers a working Apple Pay button.
</Warning>

***

## Which one?

| You need                                                                    | Pick                                                                          |
| --------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| Tagada funnels, hosted upsells                                              | **1. tagada-checkout**                                                        |
| Keep Woo checkout, accept a hosted pay page                                 | **2. tagada-gateway `tagada`**                                                |
| Keep Woo checkout **and** Woo totals (tax plugin, Kintsugi, Discount Rules) | **3. `tagada_inline`**                                                        |
| Custom storefront, not Woo                                                  | [Headless SDK](/developer-tools/headless-sdk/introduction), not these plugins |

***

## CRM mapping (easy to mix up)

The WooCommerce integration shows the matrix. Inline downloads there. Redirect and hosted gateway download from the funnel editor.

| This page              | CRM card               | Zip                   | `woocommerceScript` `format` | Where                      |
| ---------------------- | ---------------------- | --------------------- | ---------------------------- | -------------------------- |
| Full checkout redirect | Full Checkout Redirect | `tagada-checkout.zip` | `plugin`                     | Funnel editor              |
| Hosted payment gateway | Payment Gateway        | `tagada-gateway.zip`  | `gateway`                    | Funnel editor              |
| Inline card            | Inline card            | `tagada-inline.zip`   | `inline`                     | Integrations → WooCommerce |

***

## Related

* Woo product / coupon **sync** is the OAuth integration, not a checkout plugin.
* Shopify equivalent: [Shopify checkout script](/developer-tools/shopify/checkout-script).
