For data teams

Your mobile events, in your database, from day one.

grovs writes every link, app, message and purchase event to data stores you run. Query it directly, stream it to your warehouse, or pull it on a schedule.

9:41

Tuesday 21 October

9:41

Medlynow

Event stream healthy

4.82M events delivered today.

Northbanknow

Export ready

Q3 events, 12.4M rows.

Streamlynow

Replay complete

Warehouse back in sync.

What your team can build with grovs.

Five jobs a data team owns. Pick one to see the events, the queries and the result.

Your data · SQL on raw events
SQL on raw events
SELECT source, count(*)
FROM installs
GROUP BY source
sourcecount
email3,204
sms4,112
  • SQL on raw events

    Query the events in your own database. No export queue.

  • A stable event format

    Versioned JSON with an id, type, time, user and properties.

  • Your side from the start

    Events are written to stores you run before anything else.

  • Every event, not a sample

    Clicks, installs, sessions, messages and purchases, all kept.

  • Your own cohorts

    Build retention from the same events the dashboard uses.

  • No per-event bill

    Flat pricing, so keeping every event doesn't cost more.

What changes.

How data & analytics teams work today, and what they do with grovs instead.

Direct access

Export requests, vendor rate limits and a day's wait.

SQL on the raw events, in a database you run.

Every event

Sampled or pre-aggregated data.

Every click, install, message and purchase, in a versioned format.

No lost loads

Gaps whenever an endpoint was down.

Delivery pauses, resumes and can be replayed.

Revenue you can defend

App-reported purchases, refunds and test orders included.

Purchases validated with Apple and Google.

Easier reviews

Another processor in every vendor review.

Self-hosted in your cloud, with deletion on request.

Questions you can answer.

Real questions, answered with SQL on the raw events in your own database.

Which channels bring users who stay?

query.sql
SELECT source, count(*) AS users,
  avg(active_d30) AS d30
FROM installs
GROUP BY source
ORDER BY d30 DESC
sourced30
email44%
qr38%
sms27%

How much revenue did the spring sale bring?

query.sql
SELECT channel, sum(amount)
FROM purchases
WHERE campaign = 'spring'
  AND validated
GROUP BY channel
channelrevenue
email€41,820
sms€13,940
qr€6,210

Did the day-one nudge work?

query.sql
SELECT variant,
  avg(trained_7d) AS rate
FROM message_exposure
WHERE journey = 'day-one'
GROUP BY variant
variantrate
messaged64%
control41%

Where do links land?

query.sql
SELECT resolved_to, count(*)
FROM link_opens
WHERE ts > now() - 30d
GROUP BY resolved_to
resolved_toshare
app62%
web29%
store9%

Planning your data setup?

Other use cases or flows to measure? Ask an engineer.

Examples, step by step.

One example per job: the event, where it goes, and the query that answers the question.

Northbank · Own the raw events

From a tap to a row in your database.

  1. Link
    QRnow

    Northbank

    Activate your new card

    Scan with your phone camera.

    Scan with your camera

    go.northbank.com/activate

    1

    A customer taps a link

    A card-activation letter's QR code opens the app.

  2. Your data
    events · link.opened
    {
      "v": 3,
      "type": "link.opened",
      "user": "u_8fk2",
      "link": "card-letter",
      "platform": "ios"
    }
    2

    The event, as written

    A versioned event lands in your database as it happens.

  3. Your data
    query.sql
    SELECT platform, count(*)
    FROM link_opens
    WHERE link = 'card-letter'
    GROUP BY platform
    platformcount
    ios7,912
    android6,804
    3

    Your query, your answer

    Activations by platform, straight from the raw table.

What you'll measure.

Delivery status for each destination, at a glance. Illustrative numbers.

Event delivery · today

DestinationEventsDeliveredLagStatus
Warehouse (S3)4.82M100%1.2sStreaming
Ingest endpoint4.82M100%0.8sStreaming
Nightly pull job4.79M100%—Last run 02:00

Questions, answered.

Something else? Talk to an engineer.

Where does the data physically live?

In data stores you run, inside your cloud or data center. On grovs Cloud it lives in a dedicated project for your account.

How do we get it into Snowflake or BigQuery?

Stream events to S3 or an HTTPS endpoint and load from there with the tools you already use.

What does an event look like?

A versioned JSON envelope with an id, type, timestamp, user and properties, so consumers can parse and deduplicate safely.

What happens if our endpoint goes down?

Delivery pauses and resumes from where it stopped. You can also replay from an earlier point.

Can we delete a user's data?

Yes. Deleting a user removes their events and profile, which supports GDPR and similar requests.

Your first link, live this afternoon.

Install the SDK, connect your domain and send a link that opens the right screen. Start free on grovs Cloud, or run the same stack in your own.

Compare plans
grovs Cloud

$0up to 10K monthly users

  • Sign up and add the SDK
  • Your first link live the same day
  • Flat yearly price as you grow
Self-hosted

Flat licencea year, in your cloud, no metering

  • AWS, Azure, GCP or your data center
  • Deployment help from our engineers
  • Your SSO, your database, your rules