Customer triggers, step by step

Eleven triggers for changes to a customer record. Seven of them work on data every store can use freely (tags, note, account state, marketing consent). Four read personal data - name, email, phone, address - and are opt-in on top of the permission.

On this page: Customer Update, Customer Tags Added, Customer Tags Removed, Customer Note Changed, Customer State Changed, Customer Email Marketing Consent Changed, Customer SMS Marketing Consent Changed, Customer Name Changed, Customer Email Changed, Customer Phone Changed, Customer Address Changed

Shopify Flow's trigger picker inside Workflow Trigger Extensions, searched for Customer
Where you find them: in Shopify Flow choose Select a trigger, open Workflow Trigger Extensions and search for "Customer".

Customer Update

Fires on every save of a customer record. It carries changes: the tracked fields that changed (tags, note, account state) with the value before and after.

Fires from Shopify webhook plus change detection
Permission Customer Data Access
Switched on Turning on a Flow workflow that uses it switches it on. Its own switch is on the app's Triggers page

Use it for

  • One workflow for several kinds of customer edits, branching on changes.fields.
  • Sync every customer change to a CRM.

What Customer Update sends to your workflow

Variable in Flow Type What it holds
customer Customer (Shopify) The customer. A full Shopify customer, so all of its fields and Flow's own customer actions are available.
payload Text JSON object containing the GID of the customer that was updated (e.g. {"id":"gid://shopify/Customer/123"})
changes Object Which tracked fields changed (tags, note, account state), with the old and new value of each
changes.fields List of text Names of the tracked fields that changed
changes.items List of objects Old and new value per changed field
changes.items (each).field Text The field that changed: tags, note or state
changes.items (each).oldValue Text The value before the update. Long values are shortened
changes.items (each).newValue Text The value after the update. Long values are shortened
eventId Text The id of this event. Search for it in the app's Event History to see exactly what was sent.

Example: Forward tracked customer changes to a CRM

  1. Pick Customer Update as the trigger.
  2. Add a Condition: changes.fields Not empty and exists.
  3. Add Send HTTP request to your CRM with {{customer.id}} and a loop over changes.items (field, oldValue, newValue).
  4. Turn the workflow on.

Customer Tags Added

Fires when at least one tag is added to a customer. addedTags holds only the new ones.

Fires from Shopify webhook plus change detection
Permission Customer Data Access
Switched on Turning on a Flow workflow that uses it switches it on. Its own switch is on the app's Triggers page

Use it for

  • Start onboarding when staff or another app tags a customer wholesale or vip.
  • React to tags written by loyalty, subscription or review apps.

What Customer Tags Added sends to your workflow

Variable in Flow Type What it holds
customer Customer (Shopify) The customer whose tags changed. A full Shopify customer, so all of its fields and Flow's own customer actions are available.
addedTags Text Comma-separated list of tags that were added to the customer
removedTags Text Comma-separated list of tags that were removed from the customer in the same update (may be empty)
currentTags Text Comma-separated list of all current tags on the customer
previousTags Text Comma-separated list of all previous tags on the customer before this update
eventId Text The id of this event. Search for it in the app's Event History to see exactly what was sent.

Example: Welcome a new wholesale customer

  1. Pick Customer Tags Added as the trigger.
  2. Add a Condition: addedTags Includes wholesale.
  3. Add Send internal email to the account manager with {{customer.displayName}}, or Send HTTP request to your email tool to start the welcome series.
  4. Turn the workflow on.

Customer Tags Removed

Fires when at least one tag is removed from a customer. removedTags holds the ones that went away.

Fires from Shopify webhook plus change detection
Permission Customer Data Access
Switched on Turning on a Flow workflow that uses it switches it on. Its own switch is on the app's Triggers page

Use it for

  • Revoke a benefit when a membership tag disappears.
  • Notify the team when a subscription app removes its active-subscriber tag.

What Customer Tags Removed sends to your workflow

Variable in Flow Type What it holds
customer Customer (Shopify) The customer whose tags changed. A full Shopify customer, so all of its fields and Flow's own customer actions are available.
addedTags Text Comma-separated list of tags that were added to the customer in the same update (may be empty)
removedTags Text Comma-separated list of tags that were removed from the customer
currentTags Text Comma-separated list of all current tags on the customer
previousTags Text Comma-separated list of all previous tags on the customer before this update
eventId Text The id of this event. Search for it in the app's Event History to see exactly what was sent.

Example: Follow up when a subscriber tag is removed

  1. Pick Customer Tags Removed as the trigger.
  2. Add a Condition: removedTags Includes active-subscriber.
  3. Add Add customer tags with winback and Send internal email to retention.
  4. Turn the workflow on.

Customer Note Changed

Fires when the note on a customer is added, changed or cleared.

Fires from Shopify webhook plus change detection
Permission Customer Data Access
Switched on Turning on a Flow workflow that uses it switches it on. Its own switch is on the app's Triggers page

Use it for

  • Route notes written by support to the account owner.
  • Parse a keyword from the note (#callback) and start a task.

What Customer Note Changed sends to your workflow

Variable in Flow Type What it holds
customer Customer (Shopify) The customer whose note changed. A full Shopify customer, so all of its fields and Flow's own customer actions are available.
oldNote Text The previous note on the customer (empty if the note was not set before)
newNote Text The new note on the customer (empty if the note was cleared)
eventId Text The id of this event. Search for it in the app's Event History to see exactly what was sent.

Example: Create a callback task from a note

  1. Pick Customer Note Changed as the trigger.
  2. Add a Condition: newNote Includes #callback.
  3. Add Send internal email or a request to your task tool with {{customer.displayName}} and {{newNote}}.
  4. Turn the workflow on.

Customer State Changed

Fires when the account state of a customer changes between disabled, enabled, invited and declined.

Fires from Shopify webhook plus change detection
Permission Customer Data Access
Switched on Turning on a Flow workflow that uses it switches it on. Its own switch is on the app's Triggers page

Use it for

  • Greet customers when they activate their account.
  • See who declined an account invitation.

What Customer State Changed sends to your workflow

Variable in Flow Type What it holds
customer Customer (Shopify) The customer whose account state changed. A full Shopify customer, so all of its fields and Flow's own customer actions are available.
oldState Text The previous account state (disabled, enabled, invited, or declined)
newState Text The new account state (disabled, enabled, invited, or declined)
eventId Text The id of this event. Search for it in the app's Event History to see exactly what was sent.

Example: Tag customers who activated their account

  1. Pick Customer State Changed as the trigger.
  2. Add a Condition: newState Equal to enabled.
  3. Add Add customer tags with account-active.
  4. Turn the workflow on.

Fires when a customer's email marketing consent changes. consentState is the new state: subscribed, not_subscribed, pending, unsubscribed or redacted.

Fires from Shopify webhook
Permission Customer Data Access
Switched on Turning on a Flow workflow that uses it switches it on. Its own switch is on the app's Triggers page

Use it for

  • Keep an external email tool in step with Shopify, in both directions.
  • Record unsubscribes for compliance.
Variable in Flow Type What it holds
customer Customer (Shopify) The customer whose email marketing consent changed. A full Shopify customer, so all of its fields and Flow's own customer actions are available.
consentState Text The new email marketing consent state: subscribed, not_subscribed, pending, unsubscribed, or redacted
optInLevel Text The opt-in level: single_opt_in, confirmed_opt_in, or unknown (may be empty)
consentUpdatedAt Text ISO-8601 timestamp when the customer last updated this consent (may be empty)
eventId Text The id of this event. Search for it in the app's Event History to see exactly what was sent.

Example: Remove unsubscribed customers from an external list

  1. Pick Customer Email Marketing Consent Changed as the trigger.
  2. Add a Condition: consentState Equal to unsubscribed.
  3. Add Send HTTP request to your email tool's unsubscribe endpoint with {{customer.id}}.
  4. Turn the workflow on.

Fires when a customer's SMS marketing consent changes.

Fires from Shopify webhook
Permission Customer Data Access
Switched on Turning on a Flow workflow that uses it switches it on. Its own switch is on the app's Triggers page

Use it for

  • Mirror SMS consent into an SMS provider.
  • Stop SMS flows right after an opt-out.
Variable in Flow Type What it holds
customer Customer (Shopify) The customer whose SMS marketing consent changed. A full Shopify customer, so all of its fields and Flow's own customer actions are available.
consentState Text The new SMS marketing consent state: subscribed, not_subscribed, pending, unsubscribed, or redacted
optInLevel Text The opt-in level: single_opt_in, confirmed_opt_in, or unknown (may be empty)
consentUpdatedAt Text ISO-8601 timestamp when the customer last updated this consent (may be empty)
eventId Text The id of this event. Search for it in the app's Event History to see exactly what was sent.

Example: Tag SMS subscribers

  1. Pick Customer SMS Marketing Consent Changed as the trigger.
  2. Add a Condition: consentState Equal to subscribed. Under Then add Add customer tags sms-subscriber.
  3. Under Otherwise add Remove customer tags sms-subscriber.
  4. Turn the workflow on.

Customer Name Changed

Fires when the first or last name of a customer changes. It carries the current name.

Fires from Shopify webhook plus change detection
Permission Customer Data Access
Switched on Turning on a Flow workflow that uses it switches it on. Its own switch is on the app's Triggers page

Use it for

  • Keep names in a CRM, an ERP or a loyalty tool current.

What Customer Name Changed sends to your workflow

Variable in Flow Type What it holds
customer Customer (Shopify) The customer whose name changed. A full Shopify customer, so all of its fields and Flow's own customer actions are available.
firstName Text The customer's current first name
lastName Text The customer's current last name
eventId Text The id of this event. Search for it in the app's Event History to see exactly what was sent.

Example: Push a changed name to the ERP

  1. Pick Customer Name Changed as the trigger in Flow.
  2. Add Send HTTP request with {{customer.id}}, {{firstName}} and {{lastName}}.
  3. Turn the workflow on.

Customer Email Changed

Fires when the email address of a customer changes. It carries the current address.

Fires from Shopify webhook plus change detection
Permission Customer Data Access
Switched on Turning on a Flow workflow that uses it switches it on. Its own switch is on the app's Triggers page

Use it for

  • Update the address in tools that key on email.
  • Send a security notice about the change.

What Customer Email Changed sends to your workflow

Variable in Flow Type What it holds
customer Customer (Shopify) The customer whose email changed. A full Shopify customer, so all of its fields and Flow's own customer actions are available.
email Text The customer's current default email address
eventId Text The id of this event. Search for it in the app's Event History to see exactly what was sent.

Example: Notify support about an email change

  1. Pick Customer Email Changed in Flow.
  2. Add Send internal email to support with {{customer.displayName}} and the admin link. Think twice before putting {{email}} into a channel many people read.
  3. Turn the workflow on.

Customer Phone Changed

Fires when the phone number of a customer changes. It carries the current number.

Fires from Shopify webhook plus change detection
Permission Customer Data Access
Switched on Turning on a Flow workflow that uses it switches it on. Its own switch is on the app's Triggers page

Use it for

  • Keep an SMS or telephony tool current.

What Customer Phone Changed sends to your workflow

Variable in Flow Type What it holds
customer Customer (Shopify) The customer whose phone number changed. A full Shopify customer, so all of its fields and Flow's own customer actions are available.
phone Text The customer's current default phone number
eventId Text The id of this event. Search for it in the app's Event History to see exactly what was sent.

Example: Sync a new phone number to the SMS provider

  1. Pick Customer Phone Changed in Flow.
  2. Add Send HTTP request to the provider with {{customer.id}} and {{phone}}.
  3. Turn the workflow on.

Customer Address Changed

Fires when the default address of a customer changes. address is one formatted line, addressDetails the same address in separate fields.

Fires from Shopify webhook plus change detection
Permission Customer Data Access
Switched on Turning on a Flow workflow that uses it switches it on. Its own switch is on the app's Triggers page

Use it for

  • Re-check tax or shipping zone assignments when a customer moves country.
  • Update an ERP debtor record.

What Customer Address Changed sends to your workflow

Variable in Flow Type What it holds
customer Customer (Shopify) The customer whose default address changed. A full Shopify customer, so all of its fields and Flow's own customer actions are available.
address Text The customer's current default address as a single formatted line (may be empty)
addressDetails Object The customer's current default address as structured fields (may be empty)
addressDetails.firstName Text First name on the address
addressDetails.lastName Text Last name on the address
addressDetails.name Text Full name, derived from firstName and lastName
addressDetails.company Text Company or organization name
addressDetails.address1 Text First line - street address or PO box number
addressDetails.address2 Text Second line - apartment, suite, or unit
addressDetails.city Text City, district, village, or town
addressDetails.province Text Region - province, state, or district
addressDetails.provinceCode Text Region code (for example ON)
addressDetails.zip Text ZIP or postal code
addressDetails.country Text Country name
addressDetails.countryCode Text Two-letter country code (for example US)
addressDetails.phone Text Phone number on the address
eventId Text The id of this event. Search for it in the app's Event History to see exactly what was sent.

Example: Flag customers who moved to another country

  1. Pick Customer Address Changed in Flow.
  2. Add a Condition: addressDetails.countryCode Not equal to DE (your home market).
  3. Add Add customer tags with international.
  4. Turn the workflow on.

Next steps