Implementation is done on the customer's end. However, there are some general questions and tips for Amplitude implementation that are asked a lot. Below you can find the common instrumentation general FAQs.
- Can values be deleted or altered after ingestion?
- How is Device ID set?
- Can two different events have the same name?
- Can array values be sent into Amplitude?
- Why is device information like ‘Device Type’ or ‘Device Family’ ‘null’?
- Why are my sessions generating new Session ID values?
- How should I send recurring revenue subscription events?
- How do I filter out bot traffic users?
Can values be deleted or altered after ingestion?
Once data is ingested into Amplitude, it cannot be altered. Our current architecture is based on pre-aggregated sets by the hour, day, week and month for users and events. This allows Amplitude to easily perform large scale queries, but it does require that data be immutable.
Data can be deleted at the individual user level in compliance with GDPR and other privacy laws via the User Privacy API. More details on this API can be found here.
How is Device ID set?
DeviceIDs are set differently when sending client-side events (using our SDKs) vs server-side events (HTTP API).
- The Device ID for Android is by default randomly generated UUID unless you set to use Google's Advertising ID as the Device ID.
- For iOS SDK, Device IDs are set to the Identifier for Vendor (IDFV) if available, otherwise they are randomly generated - but you can choose to instead use the Advertising Identifier (IDFA) if available as well.
- Server-side (HTTP API)
- For server-side events, DeviceID must be manually sent in the event. If there is no DeviceID available, the Device ID will be set to a randomly generated hashed version of the user_id. More details here.
- If the same Device ID set-up is not maintained for server-side events and client-side events, the same user will have different DeviceIDs even if the device model, language and carrier are the same.
Can two different events have the same name?
No, each event name must be unique across an entire project. Two events with the same name will be considered the same event with possibly different properties sent in. If there are two events with the same name, one of them may have had a display name set to the same name as another event. You can confirm by expanding the event in Govern to see more details.
Can array values be sent into Amplitude?
Yes, however, our platform doesn't support exact matching on array properties. The contains operator can be used to filter for values within an array.
Why is device information like ‘Device Type’ or ‘Device Family’ ‘null’ in my project?
A null value will be returned if Amplitude is unable to parse device information from the device/browser or if the device is not mapped in our system. If you would like new device values to be mapped, please reach out to Amplitude's support team with the following information:
- Manufacturer (ex: samsung)
- Model (ex: sm-g930u)
- Device Family (ex: Samsung Galaxy Phone)
- Device Type (ex: Samsung Galaxy S7)
Why are my sessions generating new Session ID values?
The events ingested through our SDK will maintain the same session if the events are being seen from the same device. Session ID changes every time the Device ID changes.
How can recurring revenue subscription events be sent in?
After the first revenue event related to subscription, Apple/Google will need to be pinged to validate whether or not a subscription is active. If it is active the subscription revenue event should fire to Amplitude at the time interval of that subscription.
How to filter out bot traffic users?
While Amplitude SDKs use the User Agent to populate some user properties (such as Device type), the User Agent itself is not collected or stored. Some customers implement logic to store User Agent as a custom user property and remove the users that way.
Alternatively, if you're able to determine the IP Address of the suspected bot user, you can also use Data Filters to block events from that IP address. This can be done by navigating to Govern > Advanced > Block List.