snowplow / snowplow/snowplow-javascript-tracker

Add a ping-lite feature

Open
#979 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

type:enhancement
Dominant language
TypeScript
Stars
590
Forks
232
Avg merge
2h 22m
Merged PRs (30d)
3

Description

Is your feature request related to a problem?

I aggregate pings because I feel I must, not that I want to. If the average user spends 3 mins on a page and heartbeat is 10, 10 then thats 17 ping records plus the page_view record. A lot of the information within the ping is unnecessary, it's already within the page_view, for example user_agent, Geo, mediums, referrer etc. 50 million page_views easily become 850 million additional records with pings on 10, 10. Aggregation has already causes me issues associated to this feature request

Describe the solution you'd like

A 'ping-lite' option, which is heartbeat-lite with the exact same functionality but this instructs that I solely want only the following:

event id
page id
X and Y min/max offsets
all timestamps
domain_userid
domain_sessionidx
domain_userid

The enricher validates but then passes through, nothing is added, only pure ping information for a minimum record for its intended purpose. Or take the enricher out of equation and allow a collector to send via 3 streams; good enricher, bad stream and ping lite to s3.

Describe alternatives you've considered

It's catch 22 to aggregate or turn pings on, even with adjusted ping timings, it'll never be exactly what I need no matter how I look at it.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the existing heartbeat-lite implementation and tracing how ping records move through the tracker, collector, and enricher. Compare the requested minimal fields with the current payload and identify where a ping-lite option would be selected. Done means the option preserves the requested event, page, offset, timestamp, user, and session fields without extra enrichment.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, typescript
Domain
analytics, web-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.