Docs

Reviews, offers and automations

Support is where users are most open to talking to you. Hollo will help you turn those moments into App Store ratings and upgrades, from the same chat. This page shows how each tool will work, so you can plan for it.

Review requests

A review card is a message in the chat with one button. Tapping it opens your app's page in the App Store, ready for a review.

  • Send one from the inbox, into any conversation.
  • Let an automation send it, for example a few days after someone finishes onboarding.
  • Let Hollo AI offer one when a conversation ends well.

The best moment is right after you've solved someone's problem. They've just had a good experience, and they're already talking to you.

Your dashboard shows how many cards were sent, how many were opened, and the open rate.

There's no code to write for review cards. Hollo knows your app's App Store page from your app's settings.

Offers

An offer card shows one of your paywalls inside the chat, for example a discount for someone who's about to cancel, or an upgrade for someone asking about a Pro feature. Tapping it opens your own paywall, so the purchase goes through your existing code.

Register your paywalls

Tell Hollo which paywalls your app can show. Each one gets an ID and a title that your team sees in the inbox and the user sees on the card. You can register up to 20.

Hollo.offers = [
    HolloOffer(id: "pro_discount", title: "Pro, 50% off for 3 months"),
    HolloOffer(id: "annual_upgrade", title: "Switch to yearly and save 40%"),
]

Show your paywall when a card is tapped

Hollo.onOffer = { offer in
    showPaywall(id: offer.id) // your existing paywall code
}

In SwiftUI, a common pattern is to store the tapped offer in shared state and present your paywall as a sheet. HolloOffer is Identifiable by its id, so it works with .sheet(item:):

@Observable final class PaywallRouter {
    var offer: HolloOffer?
}

struct RootView: View {
    @Bindable var router: PaywallRouter

    var body: some View {
        ContentView()
            .onAppear {
                Hollo.onOffer = { offer in router.offer = offer }
            }
            .sheet(item: $router.offer) { offer in
                PaywallView(offerID: offer.id) // your existing paywall
            }
    }
}

Send it

Send an offer from the inbox, from an automation, or let Hollo AI offer it when it fits the conversation.

Ready-made adapters will connect paywalls from RevenueCat, Superwall, Adapty and StoreKit, so you don't have to write onOffer by hand. Once a user owns the product, the card greys out.

Your dashboard shows how many offers were sent, opened and purchased.

Automations

Automations start a conversation for you when something happens in your app or in a user's subscription.

PartOptions
TriggerAn event your app sends, or a subscription event like a trial ending or a cancellation.
AudienceEveryone, subscribers or non-subscribers, plus up to 4 rules on attributes. Once per user, or every time.
TimingRight away, after a delay, or at a local time of day.
StepsUp to 8: open the chat, send a message, send an offer, send a review request, or wait.

Automations skip users who are already in an active conversation, so nobody gets interrupted mid-question.

Send events from your app

Hollo.log(event: "finished_onboarding")

Pick event names you'll recognise later, in lowercase with underscores. Log the moments that matter for support or revenue, not every tap:

  • finished_onboarding
  • exported_first_project
  • hit_free_limit
  • cancelled_subscription (if you don't use a subscription integration)

Examples

  • Trial check-in. Trigger: trial started. Wait 2 days, then send "How's it going? Anything we can help with?"
  • Win-back. Trigger: subscription cancelled. Wait 1 day, then send a short message asking what was missing, followed by an offer.
  • Review at the right time. Trigger: exported_first_project, once per user. Wait 3 days, then send a review request.

Results

Each automation shows how many users it reached, how many opened the message, how many replied, and how many made a purchase within 7 days.

Good to know

  • Subscription triggers need an integration, so Hollo hears about trials and cancellations.
  • Be sparing. One well-timed message beats three. Users can always reply to an automated message, and that reply reaches your inbox like any other.