# Improved support for syncing external marketing activities and receiving aggregate marketing data — Shopify developer changelog --- ## Improved support for syncing external marketing activities and receiving aggregate marketing data We're revamping the External Marketing APIs in the 2024-01 version of the GraphQL Admin API. #### Breaking changes * The `channel` field in [marketingActivityCreateExternal](https://shopify.dev/docs/api/admin-graphql/latest/mutations/marketingActivityCreateExternal) and [marketingActivityUpdateExternal](https://shopify.dev/docs/api/admin-graphql/latest/mutations/marketingActivityUpdateExternal) has been renamed to `marketingChannelType`. * `utcOffset` and `isCumulative` are now required fields and the `fetchedAt` field has been removed from [marketingEngagementInput](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/MarketingEngagementInput). * The `utm` field has been deprecated from [MarketingActivityUpdateExternalInput](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/MarketingActivityUpdateExternalInput). #### Improvements on the creation of marketing activities * [marketingActivityUpsertExternal](https://shopify.dev/docs/api/admin-graphql/latest/mutations/marketingActivityUpsertExternal) can be used to sync externally managed activities without having to keep track of Shopify IDs. * [marketingActivityCreateExternal](https://shopify.dev/docs/api/admin-graphql/latest/mutations/marketingActivityCreateExternal) or [marketingActivityUpsertExternal](https://shopify.dev/docs/api/admin-graphql/latest/mutations/marketingActivityUpsertExternal) can be used to create a hierarchy of activities. Activities can be created to represent ads, ad groups, or campaigns. * Bulk mutation support has been added for [marketingActivityUpsertExternal](https://shopify.dev/docs/api/admin-graphql/latest/mutations/marketingActivityUpsertExternal). Learn more about bulk mutations on [Shopify.dev](https://shopify.dev/docs/api/usage/bulk-operations/imports). #### Now supporting the deletion of marketing activities * [marketingActivityDeleteExternal](https://shopify.dev/docs/api/admin-graphql/latest/mutations/marketingActivityDeleteExternal) can be used to delete a single external marketing activity. * [marketingActivitiesDeleteAllExternal](https://shopify.dev/docs/api/admin-graphql/latest/mutations/marketingActivitiesDeleteAllExternal) can be used to enqueue a job to bulk delete all external marketing activities. This can be used to cleanup data if a store owner revokes permission to sync data to Shopify. #### Improved support for syncing aggregate data * The `remoteId` can be used to reference a marketing activity in [marketingEngagementCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/marketingEngagementCreate). * [marketingEngagementCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/marketingEngagementCreate) can be used to sync aggregate data at the activity level and at the channel level. * Bulk mutation support has been added for [marketingEngagementCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/marketingEngagementCreate). Learn more about bulk mutations on [Shopify.dev](https://shopify.dev/docs/api/usage/bulk-operations/imports). * [marketingEngagementsDelete](https://shopify.dev/docs/api/admin-graphql/latest/mutations/marketingEngagementsDelete) can be used to enqueue a job to delete all channel-level data that was sent through [marketingEngagementCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/marketingEngagementCreate). This can be used to cleanup data if a store owner revokes permission to sync data to Shopify. *Published: January 01, 2024* Tags: API, Update Link: https://shopify.dev/changelog/improved-support-for-syncing-external-marketing-activities-and-receiving-aggregate-marketing-data ---