Product launches
You can now set email address Reply-To
s from the Pocketflows dashboard. Visit the business manager and click into a business and one of its email addresses
Improvements and changes
Creating and updating customers via POST /businesses/:id/customers
and POST /customers/:id
no longer errors for duplicate email addresses and phone numbers because these are no longer required to be unique within Pocketflows
We’ve substantially improved the loading times on GET /businesses/:id/campaigns
and GET /campaigns/:id
We’ve improved the performance of our campaign and trigger execution infrastructure
Bug fixes
Fixed issue where eliding phone_number
from customer syncing endpoints caused errors
Product launches
Continuing with automated email provisioning, we can now automatically provision non-HIPAA email addresses for all your newly created businesses. Talk to the team to learn more
The Pocketflows dashboard now has business management. View the businesses within your projects and their associated email addresses. You can also use this to delete businesses
Improvements and changes
Now that we have our new POST /sync/*
endpoints available with external_id
, we have relaxed our unique constraints around email addresses and phone numbers within a business. Customers can now share email addresses and phone number within a business although external_id
remains as the uniqueness identifier. Certain batch endpoints still de-duplicate on email addresses and phone number for backwards compatibility
Bug fixes
Customer batch syncing via POST /sync/businesses/:id/customers/batch
now properly supports partial success. If one of the customers has an invalid phone number or email address, the rest of the customers still sync properly
Improvements and changes
Email templates, campaigns, and triggers now all support metadata
. metadata
now returns from GET /objects/:id
endpoints and can be passed to POST /businesses/:id/objects
creations. Use the metadata
field to add tags and other relevant filtering information to these objects
Rewards endpoints
You can now update individual tiers of rewards programs via POST /tiers/:id
and GET /rewards_programs/:id/tiers
returns Tiers in ascending point order
GET /customers/:id/rewards_profile
and GET /businesses/:id/rewards_profiles
to get the point totals and reward tier for an individual customers or all customers of a business!
Product launches
You can now access campaign and trigger execution information from GET /campaigns/:id/executions
and GET /triggers/:id/executions
. Use these to view the status of each customer associated with the campaign and see which steps they have already executed and which is next.
Pocketflows can now automatically provision HIPAA-compliant email addresses for your created businesses. Contact the team to learn more.
Product launches
There are new business and customer syncing endpoints available in beta! If you’re using POST /businesses
or POST /businesses/:id/customers
today, contact the team to learn more about the new syncing endpoints, which should vastly simplify the business and customer replication logic. General availability to follow soon!
Improvements and changes
The email editor now allows test-sending from business email addresses in addition to project email addresses
SMS templates
SMS templates also now support “one-offs”. Use this capability to create SMS templates that are only associated with a single campaign / trigger
SMS templates are intelligently rewritten to save on SMS segments!
The SMS template editor now displays SMS segment estimation as you compose your text message
Improvements and changes
When updating email blasts that have been sent/started via POST /email_blasts/:id
, clients can now pass identical information for the name, email template, segment, and email address and not run into errors. It is still possible to add additional enrolled_customers
. This removes the need to only pass the enrolled_customers
parameter when updating email blasts that have been started
Improved onboarding experiences - we are rolling out improved onboarding experiences to our partners’ embeds. These include more expansive email template libraries and richer calls-to-action to drive more SMB engagement!
Product launches
Email addresses now support default warm-up schedules. When email addresses are provisioned, they enter a warm-up schedule that changes their daily sending limit depending on the number of emails they’ve sent. This protects SMBs from landing in spam while also growing their capacity to send marketing emails automatically
UTM parameters — Emails sent as part of campaigns, triggers, or email blasts now automatically inject query parameters onto all links contained in the email, a la ?pf_customer_id=
, ?pf_business_id=
, ?pf_campaign_id=
. Use these parameters in tandem with your booking links to track the source of bookings and drive ROI calculations for the SMB’s marketing efforts
Improvements and changes
Serialization failures, e.g. when two different API calls attempt to modify the same object, now raise a 409 Conflict
error, indicating that they are freely retryable. Before, we returned a 422 Unprocessable Entity
error, which made the error appear identical to actual validation errors
Product launches
Business phone numbers are now available ❤ Fetch them via GET /businesses/:id/phone_numbers
. Contact the team to provision them and learn more
Improvements and changes
We improved the speed of campaign execution
Bug fixes
We fixed a bug where certain valid phone numbers were being rejected as invalid
Product launches
We now support the creation of “one-off email templates! Create them either via:
POST /businesses/:id/email_templates
and pass { ..., one_off: true }
in the POST
body
POST /email_templates/:id/copy_one_off
to create a one-off copy of a business’s template in their template library
POST /project_email_templates/:id/copy_one_off
to create a one-off copy of a project template One-off templates have the semantic that they belong to a business and can be attached to their campaigns, triggers, and email blasts, but they do not show up in the GET /businesses/:id/email_templates
endpoint. We created one-off templates to support the use case of designing an email during campaign/trigger/email blast creation without it cluttering the business’s template library
Email addresses now support a Reply-To
field. Marketing emails that are sent with this field set will receive replies at the address specified in the Reply-To
field. Contact the team about setting this field on business or project email addresses
Improvements and changes
Stopping scheduled campaigns now restores them to draft
status if they have not yet been sent
Triggers now also have a draft
status. Once a trigger is activated, further deactivations move them to the inactive
status instead
We improved the speed of trigger and event processing
Email blasts can now be deleted via DELETE /email_blasts/:id
The filter syntax (used in triggers and segment definitions) now supports lists. If customer metadata has array fields, you can check for membership a la "value" in customer.values_list
Trigger filtering (via the filter
field in trigger creation/updating) now supports checking for customer segment membership via the induced field customer.segments
. For example, to check if a customer is a member of segment with ID seg_123
, you can now write "seg_123" in customer.segments
Bug fixes
Fixed a bug where certain email templates were not returning the proper set of variables, e.g. {{ customer.first_name }}
Product launches
Email analytics 📈
Campaigns now return counts for sent, delivered, opened, and bounced emails
Use these metrics to report on your email performance
Expect these analytics to soon be available on all Pocketflows marketing objects!
Improvements
You can now view “Last 30 Days” and “All Time” statistics for email and SMS sends in the Pocketflows dashboard
Triggers return clearer error messages when trying to edit steps after they are created
Bug fixes
Fixed incorrect campaign status computation for campaigns with attached customer segments
Fixed erroneous newline in SMS template previews
Product launches
We now return per-customer/per-email execution information for email blasts. Try GET /email_blasts/:id/executions
to see the data!
Improvements and changes
We rewrote our email blast execution engine for faster sending and improved reliability
Performance improvements for estimating message segments as part of campaigns. Additionally, estimated segments are now opt-in: pass ?expand[]=estimated_message_segments
to fetch them on campaigns
Metadata updates on businesses and customers have changed to a “full replace” semantic. This eases syncing concerns. Before, it was difficult to delete keys in metadata because API clients would need to compute the difference between the old and new metadata. Now, you can just pass the full metadata hash to update
Direct sends via /email_templates/:id/send
now bypass daily sending limits to better support the “Test Send Email Template” use case
Campaigns and triggers now return created_at
and updated_at
timestamps
Product Launches
Custom steps
You can now define custom steps to be available in campaign and trigger creation
Custom steps behave like webhooks; define the endpoint and headers in the Pocketflows dashboard
We support SMS- and email-like custom steps
Improvements
Improved customer deletion handling with email blast models
Bug Fixes
Fixed a bug in the unsubscribe embed
Product Launches
You can now define and manage FilterDefinition
s per business. Use these to define known values for customer metadata
Improvements
The filter language now supports .matches
on strings and .exists
and .map
on arrays
API responses are now gzip compressed by default
Optimized the speed of updating enrolled customers on campaigns
Improvements
Email-send rescheduling due to daily email limits now more fairly distributes between all campaigns, email blasts, and triggers in the business
Bug Fixes
Events processing for triggers now supports customer
being passed as an object with key id
Improvements
Triggers now support a secondary filter for additional filtering on the customer and event attributes
You can now copy email templates between your test and live projects
Bug Fixes
Updated SMS and email segment estimation on campaigns to account for missing email addresses and phone numbers
Fixed issue with preview images of empty SMS templates
Product Launches
MMS support
SMS templates now support an attached image! Maybe they’d be more aptly named SMS/MMS templates :P
Project phone numbers now support MMS sending as well
Bug Fixes
Fixed an issue with customer enrollment in email blasts
Improvements
The “Wait” step in triggers and campaigns has been enhanced with more intuitive controls
You can now remove steps from campaign drafts
Improved webhook delivery job handling
International numbers are now automatically skipped in campaign and trigger executions
Executions now automatically reschedule when email daily sending limits are reached
Product Launches
Email addresses now support daily sending limits. Utilize these to properly warm up domains for your customers and prevent their marketing emails from landing in spam
Improvements
In case of emergency, you can now halt sending across your entire project. Use with caution!
You can now create and manage project email templates in the Pocketflows dashboard!
Product Launches
We have a new email template editor! Speak with the team to have it turned on for your account. We maintain full backwards compatibility with the old editor
“Bring your own API key” - if you have already provisioned email addresses for your customers, Pocketflows can integrate into those existing addresses. Talk with the team to learn more
Bug Fixes
Resolved issues making copies of project email templates
Improvements
SMS and email usage
We now track SMS and email usage across all businesses. You can see how many SMS segments and emails each business has sent
Additionally, we return estimates for SMS and email usage in a given campaign
Added customer resubscribe functionality
Enhanced campaign and trigger template previews
Improved email test-sending dialogs in email template embeds
Bug Fixes
Fixed customer batch creation issues
Improvements
Enhanced unsubscribe system implementation
Email blasts can now define “one-off” email templates that will not be included in the business’s email template library
Performance
Vastly improved performance of customer batch creation and updates
Improved performance of campaign creation
You can now hide toasts in embeds by adding the hide_toasts=1
query param
Improved support for malformed IDs
Bug Fixes
Fixed Date conversions in filters
Product Launches
Email blasts
Email blasts are a pre-packaged primitive for sending a single email template to a set or segment of customers
You can now create and manage email blasts via API
Implemented HIPAA-compliant email sending with Paubox
Created comprehensive email blast system with creation, listing, and management features
Added email blast execution functionality
HIPAA-compliant email marketing
If you are in a HIPAA vertical, we now support sending HIPAA-compliant marketing emails. Talk to the team to learn more!
Project-Defined Events
You can now define triggerable events that will be shared across all the businesses you create in Pocketflows. Use these to create common triggers for your customer base
These project-defined events are now settable on triggers
Improvements
Improved batch customer creation with partial success handling
Added “Send test text” feature to SMS template embeds
The filter language that controls segments now supports array indexing and Date conversion
Bug Fixes
Fixed trigger creation validation issues
Product Launches
Dynamic segments
You can now create dynamic segments of customers based on flexible criteria! The syntax follows a subset of the Google CEL spec
You can read the computed customers in the segment via API
Improvements
Added support for numbers in our filter parser and evaluator
You can now update and expand segments attached to campaigns
Trigger updates
Like campaigns, you can now create embeds to create and update triggers
Trigger capabilities now match those of campaigns (e.g. step types)
There is now an embed to view a trigger
Bug Fixes
Fixed race condition in event processing
Fixed bug in iframe’d campaign embed customer selection
Product launches
You can send arbitrary business-specific events to Pocketflows. These events are used to trigger sequences. Find the full documentation for events here
Improvements
You can now activate and deactivate triggers
There is a new embeddable view for previewing campaigns that is more interactive — supports panning and zooming
Product launches
We now have embeddable SMS template editors! Like our email template editor, you can now embed an iframe
to enable visual editing of SMS templates with variable support. Find full documentation here
You can now create triggerable sequences! Specify an event (really just a string) and a sequence of messages to follow after it. When Pocketflows receives that event with a customer attached, the customer will automatically start receiving the sequence of messages. View the full documention here
Bug fixes
Fixed an issue with draft sending and sending from SMS templates