# Shopify

The Incode Age Verification for Shopify integration adds identity-based age verification to your Shopify checkout. When a customer attempts to purchase an age-restricted product, they are redirected to complete an Incode identity verification flow before their order can be placed.

> 📘 **Note**
>
> This integration requires **Shopify Plus**. Checkout UI extensions are a Shopify Plus feature.

***

## Integration Flow

1. The merchant tags age-restricted products with `age-restricted` in Shopify Admin.
2. When a customer adds one of these products to their cart, the app detects it.
3. At checkout, a banner appears: **Identity Verification Required**.
4. The customer clicks **Verify with Incode** and completes the identity flow on their device.
5. On success, they are returned to checkout and can complete their purchase.
6. On failure, they see an error and cannot proceed.
7. All verification results—session ID, pass/fail, timestamp—are stored as order attributes for merchant audit.

***

## Prerequisites

- Shopify Plus store
- Incode account with API access
- Your **Incode API Key** from Incode Dashboard > Settings > API Keys
- Your **Incode Flow ID**, the onboarding flow configured for age verification
- The Incode Age Verify app installed on your store

***

## Set Up the Shopify Integration

### Install the App

Your Incode account manager provides an installation link. Click it and follow the Shopify OAuth prompts to install **Incode Age Verify** on your store.

### Configure Your Incode Credentials

1. In your Shopify Admin, go to **Apps > Incode Age Verify**.
2. On the settings page, enter:
   - **API Key**: Your Incode API key
   - **Flow ID**: The Incode onboarding flow ID for age verification
   - **Backend URL**: Provided by your Incode account manager (leave blank if unsure)
3. Click **Save Settings**.
4. The **Connection Status** badge should turn green: ✓ Connected.

### Enable the Theme Script

This script detects age-restricted products and sets up cart attributes before checkout.

1. Go to **Online Store > Themes > Customize**.
2. In the left panel, click **App Embeds**.
3. Enable **Incode Age Verify**.
4. In the **Backend URL** field, enter the same backend URL from the previous set of steps.
5. Click **Save.**

### Tag Your Age-Restricted Products

1. Go to **Products** in your Shopify Admin.
2. Open each age-restricted product.
3. In the **Tags** field, add the tag: `age-restricted`.
4. Click **Save**.

> ⚠️ **Warning**
>
> The tag must be exactly `age-restricted` (lowercase, hyphenated). Any product with this tag will trigger the verification flow at checkout.

### Confirm the Checkout Extension is Active

1. Go to **Settings > Checkout > Customize**.
2. Click the **Apps** section.
3. Confirm **Incode Age Verify** is listed and active.

***

## Test the Integration

1. Add an `age-restricted` tagged product to your cart.
2. Proceed to checkout.
3. Confirm the **Identity Verification Required** banner appears above the payment section.
4. Click **Verify with Incode**. Confirm you are redirected to the Incode verification flow.
5. Complete the verification on your mobile device.
6. Confirm you are returned to checkout with the **Identity verified with Incode—you're all set!** confirmation.
7. Complete the purchase.

***

## View verification records

Every order placed through the verification flow includes the following in the **Additional details** section of the order in Shopify Admin:

| Attribute                   | Description                                                |
| --------------------------- | ---------------------------------------------------------- |
| `age_verification_required` | If verification was required (`true`/`false`)              |
| `age_verified`              | If the customer passed verification (`true`/`false`)       |
| `age_verified_status`       | `pass` or `fail`                                           |
| `age_verified_session`      | Incode session reference ID (first 16 characters of token) |
| `age_verified_at`           | ISO timestamp when verification occurred                   |
| `age_verified_by`           | Always `incode`                                            |

***

## Troubleshooting

### **Verification Banner Doesn't Appear at Checkout**

Confirm the following:

- The product has the `age-restricted` tag with exact spelling.
- The theme app extension is enabled.
- The app is installed: go to **Apps&#x20;**> **Incode Age Verify** to confirm.

If the banner still doesn't appear, clear your cart and re-add the product. The cart attribute sync occurs on page load.

### **Verify with Incode Button Does Nothing**

The backend URL in the theme editor may be incorrect or the backend may be unreachable. Contact your Incode Representative to confirm the backend URL.

### **Verification Completes but Checkout Still Shows the Banner**

Clear your browser cache and reload the checkout page. Confirm you are returning to the correct store URL after verification.

### **Identity Verification Failed Message**

The customer did not pass the identity check. They can click **Try Again** to retry. If they choose not to verify, age-restricted items must be removed from the cart.

***

## Support

For setup help or issues, contact your Incode Representative or email [integrations@incode.com](mailto:integrations@incode.com).
