Check the impact of the third-party cookie changes on your payments workflows

Chrome is proposing a new experience for user choice regarding third-party cookies. You need to prepare your site for users who choose to browse without third-party cookies.

This page contains information about what may be affected by the upcoming changes.

Common user journeys

Many payment and shopping workflows rely on third-party cookies. The following table lists some user journeys that may be affected if third-party cookies are disabled, and suggests alternative APIs that developers can use to avoid breakage. This list may not be exhaustive, and may be updated as more Privacy Sandbox solutions become available. We encourage you to share your feedback if you encounter any additional impacted scenarios.

User Journey Recommended APIs
Cross-site checkout FedCM
Related Website Sets
Storage Access API (SAA)
Partitioned Popins
Payments dashboards FedCM
Storage Access API (SAA)
Related Website Sets
CHIPS
Manage payment methods FedCM
Storage Access API (SAA)
Related Website Sets
CHIPS
Partitioned Popins
Fraud detection Private State Tokens
Personalized checkout button Fenced Frames with local unpartitioned data access

The best way to test if your user flows are affected by third-party cookie restrictions is to go through them with the third party cookie testing flag enabled.

To ensure your website works as expected, test the following flow with third-party cookies restricted:

  • Cross-site checkout: Test the payment flows that rely on a third-party payment provider (such as Pay with <example-provider>). Make sure that:
    • The redirect happens successfully.
    • The payment gateway is loaded correctly.
    • The payment process can be completed without errors.
    • The user is redirected back to your website as expected.
  • Payments dashboards: Test that transaction dashboard widgets work as expected with third-party cookies restricted. Verify that the user can:
    • Access the dashboard.
    • See all the payments as expected.
    • Navigate without error between different sections of the dashboard (e.g., transaction history, payment details).
  • Manage payment methods: Test that payment method management widgets work as expected. With third-party cookies blocked, test that:
    • Adding or deleting a payment method works as expected.
    • Paying with previously saved payment methods is not affected.
  • Fraud detection: Compare how your fraud detection solution works with and without third-party cookies.
    • Does blocking third-party cookies introduce extra steps, causing additional user friction?
    • Can it still detect suspicious patterns when third-party cookies are blocked in the browser?
  • Personalized checkout button: Test if payment buttons render correctly with third-party cookies restricted.
    • Can the user still complete purchases even if the personalized button doesn't display their preferred method?

Cross-site checkouts

Some payment providers may rely on third-party cookies to allow users to access their account across multiple merchant sites without the need to re-authenticate. This user journey might be impacted for those who choose to browse without third-party cookies.

Embedded checkout forms

Consider the following domains:

  • payment-provider.example provides payment services to merchant sites, and stores user payment and session data.
  • merchant.example is a website that embeds a checkout form provided by payment-provider.example.

A user has just logged into payment-provider.example (for example, while completing checkout on another site). The user initiates a checkout process on merchant.example.

With third-party cookies available, the payment-provider.example checkout form embedded on merchant.example would have access to its own top-level session cookie set on payment-provider.example in the top-level context. However, if third-party cookies are blocked, the embed won't have access to its own top-level cookies.

The diagram shows an interaction with a merchant website (merchant.example) that uses a payment widget from a third-party provider (payment-provider.example). When third-party cookies are blocked, the widget cannot access its top-level cookie, potentially disrupting the user's experience.
When third-party cookies are disabled, the `payment-provider.example` widget won't have access to the user session cookie set in the top-level context on `payment-provider.example`.

A customizable solution with FedCM

payment-provider.example should consider implementing FedCM to act as an identity provider. This approach can be well-suited when:

  • payment-provider.example is embedded on unrelated third-party sites.
  • payment-provider.example is embedded on more than five related sites.

The main benefit of FedCM is that the UI can provide users more context for their choices. With user permission, FedCM allows sharing custom data between the Relying Party (merchant.example) and the Identity Provider (payment-provider.example). Relying party can choose to support one or more identity providers, and the FedCM UI will only be displayed conditionally.

Depending on the needs, developers can choose between passive mode for the FedCM prompt to appear automatically when the user is logged in with the identity provider, or active mode, when the login process should be triggered after an action by the user, like clicking a checkout button.

FedCM also acts as a trust signal for the Storage Access API (SAA), which allows the embed to access its top-level unpartitioned cookies after the user agrees to sign in with the embed's provider, without the need for an additional user prompt.

Storage access focused solution

Another API to consider is the Storage Access API (SAA). With SAA, the user will be prompted to allow payment-provider.example embed to access its own top-level cookies. If the user approves access, the form can render as it does when third-party cookies are available.

Just as with FedCM, the user will have to approve the request on every new site where payment-provider.example is embedded. See the SAA demo to understand how the API works. If the default SAA prompt does not suit your needs, consider implementing FedCM for a more customized experience.

Reduce user friction on a small number of related sites

If both the merchant site and the payment provider belong to the same company, you can use the Related Website Sets (RWS) API to declare relationships between domains. This can help reduce user friction: for example, if insurance.example and payment-portal-insurance.example are in the same RWS, payment-portal-insurance.example will automatically get access to its own top-level cookies when storage access is requested within the payment-portal-insurance.example embed.

Other experimental solutions

Another experimental API that might be helpful in this scenario is Partitioned Popins. The API is currently in an active development stage.

With Partitioned Popins, the user can be asked to enter their credentials to sign into payment-provider.example within a popin opened by merchant.example. The storage will be partitioned by the opener merchant.example. In this case, the payment-provider.example embed will have access to the storage values set within the popin. With this solution, the user will have to sign in to the payment provider on every site.

Some payment providers offer a service that generates a payment link, which renders a custom checkout page for a merchant's site. A payment link service and a user portal for the payment provider are often implemented on different domains, for example, payment-provider.example and payment-link.example.

payment-link.example embeds a checkout form provided by payment-provider.example. This is a variation of the embedded checkout form pattern. FedCM, SAA and RWS are good options to consider for this case as well.

Payments dashboards

Some applications display transaction dashboards to their users across multiple sites, providing a centralized view of their financial activities. This requires the dashboard to access user-specific data across multiple domains.

Consider the following domains:

  • earnings.example provides a payouts dashboard that can be embedded on various web applications. This service stores user earnings data and session information.
  • catsitting.example and dogsitting.example are separate websites that both embed the earnings.example dashboard.

A user logs into their earnings.example account. When they visit either catsitting.example or dogsitting.example, they can view their earnings. The embedded earnings.example dashboard relies on top-level cookies and displays the user's personalized earnings information.

Just as in other examples, the earnings.example embed won't have access to its top-level cookies with third-party cookies disabled.

Diagram illustrating a scenario where a user's earnings information, hosted on earnings.example,
      is displayed in an embedded dashboard on dogsitting.example.  When third-party cookies are blocked,
      the embedded dashboard cannot access its top-level cookie, preventing the display of the user's personalized earnings data.
When third-party cookies are disabled, the `earnings.example` widget embedded on `dogsitting.example` won't have access to the cookie set in the top-level context on `earnings.example`.

First-party dashboards

In cases where all the three domains belong to the same party, consider using SAA together with RWS. With SAA, earnings.example can get access to its top-level cookie with user permission. If this party uses the earnings.example on four or fewer domains, declaring relationships between them with RWS can provide a smoother user experience.

If the same party embeds the widget on more than five domains, they cannot declare relationships between all the embedding sites and the widget's domain, as RWS only supports up to six sites in a set—one primary and five associated sites.

Scaled dashboards distribution

In the following cases SAA and RWS may not be the optimal solution:

  • You distribute a dashboard solution for third-party sites.
  • You have more than five sites that embed your dashboard widget.

In this case, earnings.example should consider implementing FedCM to act as an identity provider. This means that the user will need to log into dogsitting.example with an account managed by earnings.example.

FedCM offers a customizable UI that can help clearly communicate to the user which information is being shared. With FedCM, dogsitting.example can request earnings.example to share custom permissions, for example, to access transaction data.

FedCM also serves as a trust signal for the Storage Access API, and the earnings.example embed will be granted storage access to its own top-level cookies without an additional user prompt on the SAA API call.

Site specific dashboard settings

If the data doesn't need to be shared across multiple sites, consider partitioning your cookies with CHIPS. CHIPS can be useful to store site-specific preferences, for example, the dashboard layout or filters.

Manage payment methods

Another common flow is for the user to view and edit their payment methods within an embed without leaving the host site.

Consider the following flow:

  • payments.example provides a payment management tool that can be embedded on websites. This service stores user payment data and session information.
  • shop.example is a website that embeds the payments.example tool to allow users to view, edit or choose preferred payment methods associated with their shop.example account.

Payment providers that implement payment methods management should also consider becoming an identity provider with FedCM. With FedCM, the user will be able to log into the Relying Party (shop.example) using the account managed by the Identity Provider (payments.example).

With user permission, FedCM allows sharing custom data between the relying party and the identity provider. The main benefit of using FedCM is that the UI can provide users more context for their choices. It also acts as a trust signal for the Storage Access API, which allows the embed to access its top-level cookies.

With third-party cookies disabled, the payments.example embed won't have access to its top-level cookies. In this case SAA can help ensure proper operation by requesting storage access.

Sometimes the information set within the embed doesn't need to be shared across other embedding sites. payments.example may only need to store different user preferences per each particular embedding site. In this case, consider partitioning cookies using CHIPS. With CHIPS, the cookie set within payments.example embedded on shop.example won't be accessible by payments.example embedded on another-shop.example.

Another experimental API that can potentially be used in this user flow is Partitioned Popins. When the user logs into payments.example within a popin opened by shop.example, the storage will be partitioned by the opener, and the payments.example embed will have access to the storage values set within the popin. However, this approach requires users to enter credentials to sign in to the payment provider on every site.

Fraud detection

Risk analysis systems can analyze the data stored in cookies to identify patterns that deviate from the norm. For example, if a user suddenly changes their shipping address, and makes several large purchases using a new device, the potential fraud score could be increased. Fraud detection cookies are usually third-party cookies, set on the merchant sites by payment providers or fraud prevention services widgets.

While third-party cookie restrictions shouldn't break fraud detection systems, they might create additional user friction. If the system can't confidently verify that a user is legitimate due to blocked cookies, it may require additional checks, such as completing identity verification.

To support fraud detection when third-party cookies are blocked, consider integrating the Private State Tokens (PST) API into your fraud detection solution. With PST, a payment provider can register as a token issuer and grant users tokens that don't rely on third-party cookies. These tokens can then be redeemed on merchant sites to check if the user is trustworthy. See the PST developer documentation for implementation details.

Privacy Sandbox is experimenting with other anti-fraud APIs.

Personalized checkout button

Payment buttons (such as Pay with <preferred payment method>) embedded on merchant sites often rely on cross-site information set by the payment provider. This enables personalization, and the users can enjoy a smooth checkout with their preferred payment method. If third-party cookies are blocked in the user's browser, this can impact personalized payment button rendering.

While SAA could allow for storage access, the required prompt may not lead to an ideal user experience.

We're exploring a potential solution that specifically targets this use case: Fenced Frames with local unpartitioned data access. The API is currently in an active development stage, and you can shape its future. Try it yourself and provide feedback.

Get help

Report any breakages experienced to goo.gle/report-3pc-broken. You can also submit a feedback form or file an issue on GitHub in the Privacy Sandbox developer support repository.