Skip to main content
Solved

How to avoid email attribute populating after web purchase?


Forum|alt.badge.img

Hi,

I would like to store as little identifying information about my users as possible for privacy purposes.

When making a web purchase through Paddle, the payment screen asks the user for their email in order to send their receipt after the purchase. This email later shows up in the “E-mail” attribute for the customer on the RC dashboard.

I do not need this attribute populated, is there any way to avoid it?

Best answer by hafizrahman

Hi there!

With your setup, Paddle acts as the merchant of record, and they require a customer email on every checkout as they issue the receipt and invoice. When the purchase completes, RevenueCat then writes that email into the customer's $email attribute if the attribute is empty. There is no project setting to turn this off.

As ​@Crudyg123  mentioned, you can clear it after, either from the Customer Profile screen, or by deleting the attribute via SDK or REST API (guide here).

A couple of points that I can add:

  • Subscription renewals will not restore the cleared value, as renewal events carry no buyer email.
  • A new purchase by the same customer will restore it. In this case you might want to clear it again after each new purchase (e.g: automate it with a backend handler on the INITIAL_PURCHASE webhook that calls the attributes endpoint).

I hope this helps!

Best regards,

View original

6 replies

Forum|alt.badge.img+5
  • Active Helper
  • October 4, 2026

Are you using your own Paddle checkout or one of RevenueCat’s web checkout options?

You can clear the email from the customer profile, or set the $email attribute to an empty string. The catch is that this only clears it after it’s already been saved, so it doesn’t really solve the privacy concern you’re describing.

I’m not sure whether it’ll come back on a later sync, so I wouldn’t rely on clearing it as a permanent fix. That’s the part I’d check with RevenueCat support.

Here’s how to clear the attribute: https://www.revenuecat.com/docs/customers/customer-attributes


Forum|alt.badge.img
  • Author
  • New Member
  • October 4, 2026

I’m using a web purchase link. I guess populating the email attribute is done by the RC webhook when it is notified by Paddle of the purchase.


hafizrahman
RevenueCat Staff
Forum|alt.badge.img+1
  • RevenueCat Staff
  • Answer
  • October 6, 2026

Hi there!

With your setup, Paddle acts as the merchant of record, and they require a customer email on every checkout as they issue the receipt and invoice. When the purchase completes, RevenueCat then writes that email into the customer's $email attribute if the attribute is empty. There is no project setting to turn this off.

As ​@Crudyg123  mentioned, you can clear it after, either from the Customer Profile screen, or by deleting the attribute via SDK or REST API (guide here).

A couple of points that I can add:

  • Subscription renewals will not restore the cleared value, as renewal events carry no buyer email.
  • A new purchase by the same customer will restore it. In this case you might want to clear it again after each new purchase (e.g: automate it with a backend handler on the INITIAL_PURCHASE webhook that calls the attributes endpoint).

I hope this helps!

Best regards,


Forum|alt.badge.img
  • Author
  • New Member
  • October 7, 2026

Hi, thanks for the reply!

Is there a way for my backend to get notified of a purchase so I can trigger the attribute deletion automatically?


Forum|alt.badge.img+5
  • Active Helper
  • October 7, 2026

Yes, you can use a RevenueCat webhook for that. In your project, go to Integrations → Webhooks → Add new configuration and enter your backend’s HTTPS endpoint.

Handle INITIAL_PURCHASE for new subscriptions, or NON_RENEWING_PURCHASE for one time purchases. Use the event’s app_user_id to call POST /subscribers/{app_user_id}/attributes and set the $email attribute’s value to an empty string.

Set and validate the webhook authorization header, and make the handler safe to retry. This still clears the email after it has been collected, so it doesn’t prevent the initial storage.

Webhook setup: https://www.revenuecat.com/docs/integrations/webhooks
Clearing attributes: https://www.revenuecat.com/docs/customers/customer-attributes#deleting-attributes


guilherme
RevenueCat Staff
Forum|alt.badge.img+6
  • RevenueCat Staff
  • October 14, 2026

Hey folks,

Thanks for following up! ​@Crudyg123  reply and steps is the approach we'd recommend here.

To add more context, the email is saved on the customer profile before the INITIAL_PURCHASE or NON_RENEWING_PURCHASE event is sent, so clearing it from your webhook handler won't be undone by that same purchase.

Since your goal is to store as little as possible, it's good to know that our webhook payloads also include the customer's attributes in the subscriber_attributes field. That means the first purchase event will still contain the email. You can drop that field on your side and avoid logging the raw payload. Any other integrations you have enabled can receive it with that event too: www.revenuecat.com/docs/integrations/web…/event-types-and-fields

Note that when you call the attributes endpoint (docs here), you can leave updated_at_ms out of the request. If it's set to an older time than the saved email (like the purchase time from the event) the change would be ignored.

We hope this helps, but let us know if you have any further questions!