---
title: "Shopify Flow"
description: "The three Flow triggers B2B Registration Form & Approval fires, their payload fields, and how to use them for notifications and automations."
lastUpdated: 2026-04-16
canonical: https://culsin.com/docs/b2b-registration/shopify-flow/
source: https://culsin.com/docs/b2b-registration/shopify-flow/
---
B2B Registration Form & Approval fires three Shopify Flow triggers. The app does not send emails itself - use Flow to send notifications, update external systems, or build multi-step approval chains.

---

## Setting up a workflow

1. In Shopify admin, go to **Flow**
2. Click **Create workflow**
3. Set the trigger to one of the three B2B Registration Form & Approval triggers below
4. Add your actions (Send email, HTTP request, etc.)
5. Turn the workflow on

---

## Trigger: B2B Customer Applied

Fires when a customer submits the registration form.

**Payload fields:**

| Field | Type | Description |
|---|---|---|
| `registrationId` | number | Internal registration ID |
| `customer_id` | number or null | Shopify numeric customer ID. Null if "Create customer on submit" is off |
| `customerEmail` | string | Email from the form |
| `companyName` | string | Company name from the form |
| `vatId` | string | VAT/Tax ID submitted. Empty string if not provided |
| `countryCode` | string | ISO 3166-1 alpha-2 country code. Empty string if not provided |

**Common uses:**

- Notify your team that a new application is waiting for review
- Log the application to a spreadsheet or CRM via an HTTP request

---

## Trigger: B2B Customer Approved

Fires when an application is approved, either manually from the dashboard or via auto-approve.

**Payload fields:**

| Field | Type | Description |
|---|---|---|
| `registrationId` | number | Internal registration ID |
| `customer_id` | number | Shopify numeric customer ID |
| `customerEmail` | string | Customer email |
| `companyName` | string | Company name |
| `vatId` | string | Validated VAT/Tax ID. Empty string if not provided |
| `companyShopifyId` | string | Shopify B2B Company GID if "Create B2B Company" is enabled. Empty string otherwise |

**Common uses:**

- Send a welcome email to the approved customer
- Add the customer to a CRM or mailing list
- Trigger a Slack or Teams notification to your sales team

---

## Trigger: B2B Customer Rejected

Fires when an application is denied from the dashboard.

**Payload fields:**

| Field | Type | Description |
|---|---|---|
| `registrationId` | number | Internal registration ID |
| `customer_id` | number or null | Shopify numeric customer ID. May be null if the customer was never created |
| `customerEmail` | string | Customer email |
| `companyName` | string | Company name |

**Common uses:**

- Send a polite denial email to the applicant
- Archive the application in an external system

---

## Sending emails with customer data

In a Flow **Send email** action, you can reference payload fields using double-brace syntax. The field names depend on which trigger you're using.

Example email body for the approved trigger:

```
Hi {{customerEmail}},

Your application for {{companyName}} has been approved. You can now log in and access wholesale pricing.

Welcome aboard.
```

All string fields from the payload are available as template variables.

---

## Using Flow Actions

B2B Registration Form & Approval also exposes two Flow **actions** you can call from other workflows:

- **Approve B2B registration** - approves a pending application by `registrationId`
- **Deny B2B registration** - denies a pending application by `registrationId`

These are useful if you want to build a multi-step approval chain. For example: trigger on `B2B Customer Applied`, send an internal email with a link to the admin, then have a manual approval step that calls the action.
