Skip to content

Releases: klaviyo/klaviyo-api-node

v8.0.1

14 Mar 21:57
3bf8416

Choose a tag to compare

Fix model errors inside create queries for Reporting API

v8.0.1-beta.1

14 Mar 21:58
966349d

Choose a tag to compare

v8.0.1-beta.1 Pre-release
Pre-release

Fix model errors inside create queries for Reporting API

v8.0.0

15 Feb 17:20
7c8cb85

Choose a tag to compare

Revision 2024-02-15

Added:

  • New ReportingApi allows you to request campaign and flow performance data that you can view in the Klaviyo UI.

  • campaignValuesQuery

    • Request campaign analytics data, for example, a campaign performance report on the open rate over the past 30 days.
  • flowValuesQuery

    • Request flow analytics data, for example, a flow performance report on the revenue per recipient value over the past 3 months.
  • flowSeriesQuery

    • Fetch flow series data for a specific interval and timeframe, for example, a flow performance report on weekly click rates over the past 12 months.
  • New ProfilesApi endpoint allows you to create or update a profile with a set of profile attributes.

    • createOrUpdateProfile
      • This endpoint operates synchronously and offers an upsert pattern similar to the v1/v2 Identify API.

Changed:

  • Removed the $attribution field from event_properties in get_event and get_events (breaking change).

    • To include this data in your request, add include=attributions to your request.

8.0.0-beta.1

15 Feb 17:13
05791d6

Choose a tag to compare

8.0.0-beta.1 Pre-release
Pre-release

Revision 2024-02-15

Added:

  • New ReportingApi allows you to request campaign and flow performance data that you can view in the Klaviyo UI.

  • campaignValuesQuery

    • Request campaign analytics data, for example, a campaign performance report on the open rate over the past 30 days.
  • flowValuesQuery

    • Request flow analytics data, for example, a flow performance report on the revenue per recipient value over the past 3 months.
  • flowSeriesQuery

    • Fetch flow series data for a specific interval and timeframe, for example, a flow performance report on weekly click rates over the past 12 months.
  • New ProfilesApi endpoint allows you to create or update a profile with a set of profile attributes.

    • createOrUpdateProfile
      • This endpoint operates synchronously and offers an upsert pattern similar to the v1/v2 Identify API.

Changed:

  • Removed the $attribution field from event_properties in get_event and get_events (breaking change).

    • To include this data in your request, add include=attributions to your request.

7.2.0

15 Dec 16:09
85fb8d8

Choose a tag to compare

Added

  • New Endpoints: Bulk Profile Imports:
    • Profiles.spawnBulkProfileImportJob
    • Profiles.getBulkProfileImportJob
    • Profiles.getBulkProfileImportJobs
    • Profiles.getBulkProfileImportJobLists
    • Profiles.getBulkProfileImportJobProfiles
    • Profiles.getBulkProfileImportJobImportErrors
    • Profiles.getBulkProfileImportJobRelationshipsProfiles
    • Profiles.getBulkProfileImportJobRelationshipsLists

Changed

7.2.0-beta.1

15 Dec 16:24
85fb8d8

Choose a tag to compare

7.2.0-beta.1 Pre-release
Pre-release

Added

  • New Endpoints: Bulk Profile Imports:
    • Profiles.spawnBulkProfileImportJob
    • Profiles.getBulkProfileImportJob
    • Profiles.getBulkProfileImportJobs
    • Profiles.getBulkProfileImportJobLists
    • Profiles.getBulkProfileImportJobProfiles
    • Profiles.getBulkProfileImportJobImportErrors
    • Profiles.getBulkProfileImportJobRelationshipsProfiles
    • Profiles.getBulkProfileImportJobRelationshipsLists

Changed

v7.1.0-beta.2

09 Nov 16:09
e8d2d8b

Choose a tag to compare

v7.1.0-beta.2 Pre-release
Pre-release

Fixes

  • Fixed OAuth authorization redirect url

7.1.0

02 Nov 15:54
5888465

Choose a tag to compare

[7.1.0] - revision 2023-10-15

Changed

  • Creating objects can now take the type as a string as well as an enum
    let profile: ProfileCreateQuery = {
      data: {
        type:  'profile',
        attributes: {
          email: "[email protected]"
        }
      }
    }
  • Endpoints with multiple included properties will now deserialize both included objects correctly
    • i.e. eventsApi.getEvent("${EVENT_ID}", {include: ['metric', 'profile']})
  • Models that were supposed to support two primitive types but were serializing incorrectly now support one but work correctly
    • i.e. updateProfile's unset value now takes a list of strings and serializes correctly.

7.1.0-beta.1

02 Nov 17:16
f4c03e2

Choose a tag to compare

7.1.0-beta.1 Pre-release
Pre-release

Changed

  • Creating objects can now take the type as a string as well as an enum
    let profile: ProfileCreateQuery = {
      data: {
        type:  'profile',
        attributes: {
          email: "[email protected]"
        }
      }
    }
  • Endpoints with multiple included properties will now deserialize both included objects correctly
    • i.e. eventsApi.getEvent("${EVENT_ID}", {include: ['metric', 'profile']})
  • Models that were supposed to support two primitive types but were serializing incorrectly now support one but work correctly
    • i.e. updateProfile's unset value now takes a list of strings and serializes correctly.

v7.0.0

16 Oct 19:47
4fd2ebc

Choose a tag to compare

Added

Support for returning list suppressions via the /profiles endpoint

We now support filtering on list suppression with the get profiles endpoint, which brings us to parity with v2 list suppression endpoint that was the previously recommended solution.

Rules for suppression filtering:

  • You may not mix-and-match list and global filters
  • You may only specify a single date filter
  • You may or may not specify a reason
  • You must specify a list_id to filter on any list suppression properties

Examples:

{filter: 'greater-than(subscriptions.email.marketing.suppression.timestamp,2023-03-01T01:00:00Z)'}
{filter: 'greater-than(subscriptions.email.marketing.list_suppressions.timestamp,2023-03-01T01:00:00Z),equals(subscriptions.email.marketing.list_suppressions.list_id,”LIST_ID”')
{filter: 'greater-than(subscriptions.email.marketing.suppression.timestamp,2023-03-01T01:00:00Z),equals(subscriptions.email.marketing.suppression.reason,"user_suppressed"')
Optionally retrieve subscription status on Get List Profiles, Get Segment Profiles, Get Event Profile

Now you can retrieve subscription status on any endpoint that returns profiles, including getListProfiles, getSegmentProfiles and getEventProfile. Use {additionalFieldsProfile: ['subscriptions']} on these endpoints to include subscription information.

Breaking changes

Subscription object not returned by default on Get Profile / Get Profiles

The subscription object is no longer returned by default with get profile(s) requests. However, it can be included by adding ?additional-fields[profile]=subscriptions to the request. This change will allow us to provide a more performant experience when making requests to GetProfiles without including the subscriptions object.

Profile Subscription Fields Renamed

In the interest of providing more clarity and information on the subscription object, we have renamed several fields, and added several as well. This will provide more context on a contact's subscriptions and consent, as well as boolean fields to see who you can or cannot message.

For SMSMarketing:

  • timestamp is now consentTimestamp
  • lastUpdated is a new field that mirrors consenTimestamp
  • canReceiveSmsMarketing is a new field which is True if the profile is consented for SMS

For EmailMarketing:

  • timestamp is now consentTimestamp
  • canReceiveEmailMarketing is True if the profile does not have a global suppression
  • suppressions is now suppression
  • lastUpdated is a new field that is the most recent of all the dates on the object