Documentation Index
Fetch the complete documentation index at: https://documentation.idenfy.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The iDenfy Shopify app embeds identity verification directly into your store. Decide when customers verify (4 flows), who is asked (conditional triggers), and what happens after (order holds, auto-refunds, emails) — all from the Shopify Admin.Install from the App Store
Pick a verification flow
Layer conditional triggers
Automate order state
How It Works
The Shopify app combines a Shopify Admin app (built on Remix + Polaris), a Theme App Extension (Liquid), and a Checkout/Customer Account UI extension (React). When a verification trigger fires, the storefront fetches a one-timeauthToken from iDenfy, opens iDenfy’s hosted UI, and writes the result back onto the Shopify customer and order via metafields, tags, and notes.
Quick Start
- Active iDenfy production environment (see pricing)
- iDenfy API key and secret (Dashboard → Settings → API Keys)
- A Shopify store on any plan that supports apps and theme editing
Install the iDenfy app

Connect your iDenfy account
- iDenfy login (recommended)
- Manual API key

Choose a verification flow
Configure the iDenfy webhook
- Receiver:
https://shopify.idenfy.com/api/sdk/verification/webhook - Signing key: the same API key you connected with above

Enable the matching extension in your theme
Verification Flows
You pick one flow per store. Each flow controls where the verify button appears and when the customer is asked.| Flow | Where the button appears | Best for |
|---|---|---|
| Account page | Customer account page (Legacy & new) | Pre-qualify customers before they can check out |
| Before checkout | Cart page or cart drawer | Block checkout until verified |
| During checkout | The checkout page itself | Verify mid-checkout without leaving Shopify |
| After checkout | Thank-you & Order-status pages | Let purchase complete, then verify (with hold/refund) |
Account page flow
Account page flow

Before checkout flow
Before checkout flow


During checkout flow
During checkout flow
After checkout flow
After checkout flow

Theme & UI Setup
Once a flow is picked, enable its matching extension in Online Store → Themes → Customize.- App Embed Block (Account + Before checkout)
- Checkout / Account UI Extension (During + After checkout)

| Setting | Purpose |
|---|---|
| CTA text | Label on the verify button. |
| Geolocation permission notice / retry text | Shown when the browser blocks geolocation. |
| Checkout button selector | CSS selector for the theme’s checkout button, so the app can hide it. Comma-separated for multi-theme support. |
| Cart alter buttons selector | CSS selector for cart add/remove buttons, so KYC is re-evaluated when the cart changes. |
| Account (Legacy) button selector | CSS selector used to anchor the verify button on the legacy account page. |
Advanced — CSS variable styling
Advanced — CSS variable styling
Triggering Rules
In the ID Verification flow card you can layer multiple conditional triggers. The customer is asked to verify only when at least one rule matches.| Rule | Description | Flow restriction |
|---|---|---|
| Daily money limit | Customer’s total ordered amount today reaches the limit. | All flows |
| Monthly money limit | Same, month-to-date. | All flows |
| Daily order count | Trigger after N orders today. | All flows |
| Monthly order count | Same, month-to-date. | All flows |
| By region | Trigger for customers in specific countries or US states. Detected via browser geolocation or shipping address. | Shipping-address detection is after-checkout only |
| By risk factor | Trigger when the order’s Shopify risk score reaches low / medium / high. Optional “trigger when no risk factor yet” checkbox. | After-checkout only |
| By product / collection | Narrow all the above triggers to carts containing specific products or collection items. | All flows |
How browser geolocation works
How browser geolocation works
- The storefront requests the browser’s coordinates via the Geolocation API.
- Coordinates are POSTed to
/apps/sdk/geolocationand stored as customer metafields (idenfy.geolocation_latitude,idenfy.geolocation_longitude,idenfy.geolocation_date). - Coordinates older than ~5 min on the cart page are refreshed automatically. Coordinates older than 1 hour are flagged in logs but still used.
- The server uses PostGIS geometry to check whether the coordinates fall inside any of the configured countries or US states.
Identity Constraints
Separate from triggers, the following identity constraints apply to every verification:| Constraint | Description | Flow restriction |
|---|---|---|
| Name must match identity document | iDenfy fails the verification if the Shopify-provided name does not match the document. | All flows |
| Global minimum age | Minimum age applied to every verification. | All flows |
| Regional minimum age | Per-country and per-state minimum age. Age is computed from the document’s date of birth. | After-checkout only |
Order State Management
Available only in the After-checkout flow. When Automatically manage Shopify’s order state is enabled:Order placed
Customer prompted
On success — auto-release
APPROVED, the hold is released and the order proceeds to fulfillment automatically.- Ask Complete KYC — sent while the order is on hold.
- Order Cancelled — sent when the order is auto-cancelled.
Email Notifications
The app can send up to four transactional emails:| Sent when | Available in | |
|---|---|---|
| Ask Complete KYC | Order placed and held for verification | After-checkout (Order State Management) |
| Order Cancelled | Order auto-cancelled after timeframe expires | After-checkout (Order State Management) |
| Successful KYC verification | Webhook returns APPROVED | All flows |
| Failed KYC verification | Webhook returns DENIED / SUSPECTED / EXPIRED | All flows |
Custom Sender Identity
By default, emails are sent from iDenfy’s shared address. You can configure a custom domain via Resend:Configure identity
noreply), domain, and AWS region (us-east-1, eu-west-1, sa-east-1, or ap-northeast-1).Verify domain
Available template variables
Available template variables
| Variable | Available in |
|---|---|
{firstName}, {lastName} | All emails |
{orderNumber} | All order-bound emails |
{orderStatusPageUrl} | Ask Complete KYC |
{timeframe} | Ask Complete KYC |
{reason} | Failed KYC |
{manageOrderState} | Successful KYC (inserted when Order State Management is on) |
Customer & Order Records
After every verification, the app writes the result onto Shopify.Customer Record
| Field | Type | Meaning |
|---|---|---|
idenfy.is_verified | metafield (boolean) | true if APPROVED. The source of truth across the app. |
idenfy.verification_status | metafield (text) | APPROVED / DENIED / SUSPECTED / EXPIRED |
idenfy.scan_ref | metafield (text) | iDenfy verification reference |
idenfy.fraud_tags | metafield (text) | Comma-separated fraud flags from iDenfy |
idenfy.mismatch_tags | metafield (text) | Comma-separated mismatch flags |
idenfy.geolocation_* | metafield (number/datetime) | Last submitted geolocation (when geolocation triggering is on) |
| Tag | string | Exactly one of idv-approved, idv-denied, idv-suspected, idv-failed, idv-expired, idv-unverified |

Order Record
When verification is tied to an order (Before checkout with a logged-in customer, During checkout, or After checkout):- Order Notes — the app appends a line summarizing status, scan reference, and any fraud / mismatch tags.
- Order Tags — the same
idv-<status>tag is added. - Fulfillment hold / release — automatic, under Order State Management.
- Order cancellation & refund — automatic, if the order remains unverified past the configured timeframe.

Additional Settings
- Automatically delete customer scan references — when a customer is deleted in Shopify, their iDenfy scan reference is also deleted via the iDenfy API.
- Customer scan-ref removal table — a searchable, paginated list of customers with an
idenfy.scan_refmetafield. You can manually delete a scan reference; the metafield is then replaced with"Deleted on iDenfy Dashboard"so the action is visible in the customer record.
Reference
Verification Statuses
| iDenfy status | Customer/order tag | Meaning |
|---|---|---|
APPROVED | idv-approved | Verified successfully |
DENIED | idv-denied | Failed verification |
SUSPECTED | idv-suspected | Verified but flagged for manual review |
EXPIRED | idv-expired | Verification session expired without completion |
FAILED | idv-failed | Internal/system failure |
| (none yet) | idv-unverified | Session started, no result yet |
SUSPECTED result returned during checkout triggers a banner asking the customer to retry.Troubleshooting
Webhook signature errors
Webhook signature errors
Geolocation permission missing
Geolocation permission missing
“Order not ready” / retry
“Order not ready” / retry
SUSPECTED verifications
SUSPECTED verifications
SUSPECTED means iDenfy verified the identity but flagged the result for human review. By default these customers are not treated as verified — they appear with the idv-suspected tag and Order State Management keeps the order on hold until the status is changed on the iDenfy Dashboard.Custom themes — buttons not hidden
Custom themes — buttons not hidden


