And the mainstream apps like Streamlabs can do it accurately without that message. So, if that’s the case, how do they do this with the mixture of the below eventsub events:
channel.subscribe
channel.subscription.message
channel.subscription.end
channel.chat.notification
And if its to do with monitoring for not receiving the .end event for a subscriber, how do we manage this for users that are already subscribe because we won’t know the date they first subbed?
It just seems crazy, that the main feature of twitch is subscribing/resubscribing to a channel and its so difficult to accurately track or get any historical data on, which is clearly available in the backend as you are able to send cumulative_total fine if they send a message in chat. Why can’t it just be as simple as channel.subscribe for new subs and channel.subscription.resub every time they resub whether they send a message or not, or even just channel.subscribe for both with a type field of sub or resub and cumulative_total in so its easy to track.
The way it is currently, if your app is offline for even a few minutes or you develop the bot after you have already been streaming for a while, it is impossible to accurately track subscriptions correctly.
One logical reason is to stop overlay providers “announcing a resub in error” that the user didn’t share, and or the user isn’t actively on Twitch but are keeping their subscription going and don’t want that information shared outside of Twitch for any privacy issue.
Another is a privacy reason around payment success/fail tracking being possible like this.
Most of thus uservoice has been completed via the introduction of channel.chat.notification which fulfills mine and soaryn’s usecase(s).
To answer:
I pull the subscriber list in full daily and track in my own custom system and revise numberswhen/if a channel.chat.notification
I use channel.subscribe and channel.subscription.end as well to write to the table in question. Logically if you don’t have an end then the number of months is, approximately, the number of months since you recieved a .subscribe.
The problem of preseeding exists, but the broadcaster CSV solves that one
They do what I outlined above.
They math based on the start event to current time revising the user if a notification/revisment is recieved.
Given they were running of the predecessor to channel.chat.notification which is Chat itself (IRC) and/or deprecated PubSub. As PubSub is replaced by eventsub.
So in summary:
we poll the API daily and caluclate it ourseleves
we consume EventSub (or Chat/IRC as we didn’t move to EventSub yet) data to revise self caclulations