Changelog

  • Improvements

    • Reputation Management

      • Businesses can now view and generate permanent review links

      • Added a review configuration page, which allows businesses to customize their public review pages.

      • Launched the GET /businesses/:id/review_embed_config and POST /businesses/:id/review_embed_config endpoints to allow for viewing and updating of the review configuration.

      • SMBs can generate short and shareable links to collect reviews

    • Campaign Test Sending - Added the ability to test-send campaigns to preview all the steps of the campaign

    • Added the ability to copy existing email templates as project email templates within the Pocketflows dashboard.

    • Added a new endpoint GET /customers/:id/segments to retrieve segments associated with a customer.

    • Added a new endpoint GET /campaigns/:id/variables to retrieve all variables associated with a given campaign.

  • Product Launches

    • In Beta: Reputation Management

      • Our reputation management module is now in beta!

      • Enable your businesses to manage reviews across a number of channels, including their own internal reviews, Google, and Yelp

      • New endpoints:

        • GET /reviews: List all reviews.

        • POST /reviews: Create a new internal review.

        • POST /reviews/{review_id}/response: Respond to a specific review.

      • Review Embeds

        • Along with the API capabilities, we launch new UIs into the customizable embed to view the reviews and connect accounts

    • Internal Event: Customer Joined Segment

      • Triggers can now be set up to respond to the customer_joined_segment event, enabling automated actions when customers enter specific segments.

  • Improvements

    • The customizable embed now has a Segments page where SMBs can build dynamic segments of their customer base

    • Segments can now simultaneously have a filter and static_customers. The filter is first evaluated to include customers then all static_customers are manually included

    • Enhanced the RequestLog to track request duration in milliseconds.

  • Bug Fixes

    • Addressed a bug preventing campaign templates from loading in the dashboard

    • Resolved an issue with the clicked count for emails from GET /businesses/:id/campaigns

    • Fixed a bug with segment deletion

  • Product Launches

    • Excluded Users for Campaigns and Triggers

      • You can now exclude specific customers from campaigns and triggers, preventing them from receiving communications

      • Pass them via the excluded_customers field or do so via the embedded UIs

    • Analytics in the Customizable Embed

      • Analytics are now displayed in the index pages for campaigns and triggers

      • Detailed analytics and steps are now available via tabs within the show pages for campaigns and triggers.

  • Improvements

    • Link tracking and rewriting is now supported in plain text emails

    • Added safeguards to prevent accidental discards of unsaved work in email and campaign creation

  • Bug Fixes

    • Resolved an issue that prevented deleting campaigns and triggers

    • Resolved spurious 500 errors on our /sync endpoints

  • Product Launches

    • Trigger Templates

      • Similar to campaign templates, we now support trigger templates. Partners may use these to suggest event-based automations to their small businesses

      • Create new trigger templates based off any of the existing triggers within your small businesses

  • Improvements

    • For convenience, you can create new embeds for a business directly from the dashboard

  • Bug Fixes

    • Addressed an issue where customizable embeds could not load email addresses

    • Fixed an issue preventing campaign and trigger deletion

  • Product Launches

    • Triggers in the Customizable Embed

      • Create, edit, and view triggers directly within the customizable embed - those created with POST /businesses/:id/embeds

    • Revamped Webhooks

      • Projects can now define multiple webhooks

      • Webhooks can also have custom headers specified

  • Improvements

    • We have improved our email address validation during customer creation and updating

    • The campaign editor within the custommizable embed has been improved to align with the trigger editing experience

  • Bug Fixes

    • Fixed a bug that prevented trigger creation when custom steps were present but no sending email address was selected.

    • Improved handling of empty string payloads when creating/updating customers via various API endpoints.

  • Product Launches

    • Internal Event Triggering

      • You can now define Triggers off of InternalEvents. The first supported InternalEvent is customer_created which fires whenever a new customer is created via POST /businesses/:id/customers or POST /sync/businesses/:id/customers

  • Improvements

    • Businesses within test projects are automatically provisioned email addresses so they are ready to send campaigns immediately

    • You can now configure colors for the business embeds (those created via POST /businesses/:id/embeds). Configure them in the dashboard to help you better align with your brand

    • We've added a new endpoint GET /customers/:id/unsubscribe_info to show which campaigns and triggers a customer has unsubscribed from

    • The dashboard now allows for greater visibility and management of project-defined events, including creation and display text editing. Manage them here

    • Both Campaign and Trigger objects returned from endpoints now surface the count of executed custom steps. See the statistics.custom_steps field

  • Bug Fixes

    • Resolved an issue with deleting customers

    • Resolved an issue with deleting campaigns

  • Product Launches

    • Campaign Templates

      • Campaign templates allow partners to create and display suggestions for campaigns to all of their small businesses

      • You can create campaign templates from any of the campaigns that your small businesses have already created

    • URL Shortening Service & Analytics

      • Launched a new URL shortening and redirect service to create shorter, more manageable links

      • We can now track clicks on links from within emails to further monitor engagement

  • Improvements

    • You can now view all the campaigns and triggers for all the businesses within your test and live projects

  • Bug Fixes

    • Resolved an issue where project email templates were not viewable or editable in the dashboard.

    • Resolved an issue with tracking sent custom steps

  • Product Launches

    • The new POST /businesses/:id/embeds is the fastest way to get started with the Pocketflows API. Generating an embed gives you an iframe which allows you to edit campaigns and email templates. Future customizations will become available!

  • Improvements

    • Project email addresses are now visible in the dashboard for projects and their sub-businesses.

    • The UI for campaigns now has the ability to schedule the start and end of campaigns

    • The segment filter syntax now supports the has operator. Use this operator to test whether an object has a key present, e.g. has(customer.key)

    • The speed of segment filtering has been improved

  • Bug Fixes

    • Fixed some issues with business deletion

  • Product launches

    • You can now set email address Reply-Tos 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 metadatametadata 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 FilterDefinitions 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