What's the difference between webhook v1 and v2?
This document explains the differences between v1 and v2 of the Leadsie webhook payload format.
Summary
The webhook data is sent each time a new connection is made, whether successful or unsuccessful, and includes details of what your client granted.
v1 provides basic connection status information with a success/failure indicator. It includes asset details like name, type, connection status, and platform-specific fields.
v2 is an enhanced version that provides richer context. It includes user assignment details, access levels, permission information, asset links, and timestamps. v2 removes some deprecated fields (like `isSuccess` and `message`) in favor of more structured data. Asset types are displayed as human-readable labels with platform context. You can now refresh assets in Leadsie to check for changes in connection status, as well as offboard them; the v2 data gives clearer information about the current status of assets, not just at the time of granting.
Technical Details
Connection Level Changes
- v2 only:
apiVersionfield added to identify the API version
Asset Level Changes - Fields Removed in v2
isSuccess(boolean) - use `connectionStatus` insteadmessage(string) - raw error message; this is often not very helpful, and has been replaced bynotes, to give clearer explanations of any problemsinviteSentTo(string) - replaced by `connectedAccount`; see also the `wasInvitedByEmail` flag
Asset Level Changes - Fields Added in v2
platform(string) - which platform the asset is from ("Meta", "Google", "LinkedIn", etc.)-
statusLastCheckedAt(Date) - timestamp when the asset status was last checkedlinkToAsset(string) - deep link URL to access the asset in the relevant platform, where availableassignedUsers(array) - list of users assigned to the asset, each with:id(string)name(string)-
role(string)isSuccess(boolean)connectedAccount(object) - connected account information with: id(string)name(string)
wasInvitedByEmail(boolean) - indicates if access was granted via email invitationwasCreatedByLeadsie(boolean) - indicates if the asset was created by the client through LeadsiewasGrantedViaAssetType(string) - indicates if access to the asset was granted via a different asset; this may be "Facebook Page" for an Instagram account, or "Facebook Ad Account" for an Instagram account or Meta DatasetplatformPermissionsGranted(array) - list of fine-grained permissions granted for the asset (currently only supported for Facebook Pages)accessLevel(string) - access level granted: "ViewOnly", "Manage", or "Owner"googleBusinessProfileLocationMapsUri(string) - Google Business Profile only: link to business on Google Maps, if availablegoogleBusinessProfileLocationReviewUri(string) - Google Business Profile only: link to business review prompt on Google Maps, if availablegoogleBusinessProfileLocationPlaceId(string) - Google Business Profile only: Google Place ID for the business, if availablenotes(string) - any notes associated with the asset, including advice in the case of a problem granting it
Asset Level Changes - Fields Modified in v2
type(string) - the possible values of this field have been adjusted slightly for clarity
Request Level Changes
No changes - both versions expose the same fields.
Reference:
The possible values for the type field on connectionAssets are:
“Meta Ad Account” | “Facebook Page” | “Facebook Catalog” | “Meta Pixel” | “Instagram Account” | “Google Analytics Account” | “Google My Business Location” | “Google Search Console” | “Google Merchant Center” | “Google Tag Manager” | “Google Ads Account” | “TikTok Advertiser Account” | “LinkedIn Company Page” | “LinkedIn Ad Account” | “Shopify Store” | “WordPress Site” | “Squarespace Website” | “Klaviyo Account” | “YouTube Channel” | “Microsoft Ads” | “Mailchimp Account” | “Pinterest Ad Account” | “GoDaddy Account” | “HubSpot Account” | “Yelp Business Account” | “X Profile” | “X Ads” | “Snapchat Business Account”