Skip to main content
Answer

Options for extra product data?

  • October 21, 2025
  • 1 reply
  • 33 views

Forum|alt.badge.img

I’m trying to build a ‘tipping’ system like Youtube where users can tip during a livestream. The tip value will determine different factors like how long the message gets pinned, or what colors and emojis are used to display the message. I wanted to attach some metadata to my products in Revenuecat to do this, but it seems like that isn’t allowed.

Is there any way of achieving this via Revenuecat without implementing any logic in my backend system?

Best answer by guilherme

Hey ​@ramim94,

We’re about to publish a blog post on building a “tip jar” with RevenueCat (stay tuned on our blog).

The blogpost will have more context, but this approach would be a great fit for simple one-off tips (“buy me a pizza/coffee”) using consumable products. Where you don’t need entitlements to achieve this, since you’re not granting ongoing access and just taking a one-time payment and triggering UI effects.

In the meantime, you can ship it today by creating consumable products at the specific store(s), sync them into RevenueCat, and add them to an Offering as separate packages (e.g., $1, $5, $10).

You would then present the Offering (Paywalls or your own UI via getOfferings), call purchase on the selected package, and on success show your “thanks” and apply the tip effect.  

As to control how each tier behaves (pin duration, color, emoji), you can use Offering metadata - include a small JSON map (SKU mapped to behavior) and read it client-side after fetching Offerings. This lets you tweak presentation without shipping a new app build with updates.

Note: metadata lives on the Offering (not the product itself), is fetched/cached client-side, and isn’t tied to individual transactions.

 

As to get a full YouTube-style livestream effects that everyone sees those global pin timers or shared colors, you’ll still want a lightweight backend or your chat provider to consume SDK events/webhooks and broadcast state.

For a simple, local “tip jar,” the consumables + Offering metadata pattern works well but for a shared and real-time experiences, it would be best to plan on adding a minimal server piece.

This post has been closed for comments

1 reply

guilherme
RevenueCat Staff
Forum|alt.badge.img+6
  • RevenueCat Staff
  • Answer
  • October 23, 2025

Hey ​@ramim94,

We’re about to publish a blog post on building a “tip jar” with RevenueCat (stay tuned on our blog).

The blogpost will have more context, but this approach would be a great fit for simple one-off tips (“buy me a pizza/coffee”) using consumable products. Where you don’t need entitlements to achieve this, since you’re not granting ongoing access and just taking a one-time payment and triggering UI effects.

In the meantime, you can ship it today by creating consumable products at the specific store(s), sync them into RevenueCat, and add them to an Offering as separate packages (e.g., $1, $5, $10).

You would then present the Offering (Paywalls or your own UI via getOfferings), call purchase on the selected package, and on success show your “thanks” and apply the tip effect.  

As to control how each tier behaves (pin duration, color, emoji), you can use Offering metadata - include a small JSON map (SKU mapped to behavior) and read it client-side after fetching Offerings. This lets you tweak presentation without shipping a new app build with updates.

Note: metadata lives on the Offering (not the product itself), is fetched/cached client-side, and isn’t tied to individual transactions.

 

As to get a full YouTube-style livestream effects that everyone sees those global pin timers or shared colors, you’ll still want a lightweight backend or your chat provider to consume SDK events/webhooks and broadcast state.

For a simple, local “tip jar,” the consumables + Offering metadata pattern works well but for a shared and real-time experiences, it would be best to plan on adding a minimal server piece.