Instrumentation and governance issues
These questions cover instrumentation governance: what happens to events when you hide, block, or delete them, how to filter internal traffic, and several recurring UI behaviors.
Instrumentation basics
Can you delete or alter values after ingestion?
After Amplitude ingests data, you can't alter it. Amplitude's architecture uses pre-aggregated sets by the hour, day, week, and month, for both users and events. This approach supports large-scale queries, but requires immutable data.
You can delete data at the individual user level in compliance with GDPR and other privacy laws through the User Privacy API.
How does Amplitude set Device ID?
Amplitude sets Device IDs differently for client-side events (using Amplitude's SDKs) versus server-side events (HTTP API).
- SDKs
- For Android, the Device ID defaults to a randomly generated UUID, unless you opt to use Google's Advertising ID as the Device ID.
- For iOS SDK, Device IDs default to the Identifier for Vendor (IDFV) if available; otherwise the SDK generates them randomly. You can choose instead to use the Advertising Identifier (IDFA), if available.
- Server-side (HTTP API)
- For server-side events, you must manually send Device ID in the event. If no Device ID is available, Amplitude sets the Device ID to a randomly-generated hashed version of the
user_id. For more details, refer to the HTTP V2 API. - If you don't maintain the same Device ID setup for server-side and client-side events, the same user has different Device IDs even when the device model, language, and carrier are the same.
- For server-side events, you must manually send Device ID in the event. If no Device ID is available, Amplitude sets the Device ID to a randomly-generated hashed version of the
Can two different events have the same name?
No. Each event name must be unique across an entire project. Amplitude treats two events with the same name as the same event. If you notice two events in a project with the same name, the display name for one of them may have been set to the same name as another event. You can confirm by expanding the event in Amplitude Data to see more details.
Can you send array values into Amplitude?
Yes. However, Amplitude doesn't support exact matching on array properties. You can use the contains operator to filter for values within an array.
Why does device information (like Device Type or Device Family) return 'null' in my project?
Amplitude returns a null value when it can't parse device information from the device or browser, or when the device isn't mapped in Amplitude's system. To map new device values, contact Amplitude's support team with the following information:
- Manufacturer (for example, samsung).
- Model (for example, sm-g930u).
- Device Family (for example, Samsung Galaxy Phone).
- Device Type (for example, Samsung Galaxy S7).
Why do my sessions generate new Session ID values?
Events ingested through Amplitude's SDK maintain the same session if the events come from the same device. Session ID changes every time the Device ID changes.
The default session timeout for JavaScript SDK is 30 minutes. For iOS/Android, it's five minutes.
How do you send recurring revenue subscription events?
After the first subscription-related revenue event, Apple or Google must validate whether the subscription is active. If the subscription is active, Amplitude receives the subscription revenue event at the time interval of that subscription.
How do I filter out bot traffic users?
Amplitude SDKs use the User Agent to populate some user properties (such as device type), but don't collect or store the User Agent itself. Some customers implement logic to store User Agent as a custom user property and remove bot users that way.
Alternatively, if you can determine the IP address of a suspected bot user, you can use Data Filters to block events from that IP address. To learn more, refer to Amplitude's help center article on blocking bot web traffic.
Block and filter internal users
To keep data clean, Amplitude recommends setting up a development project alongside your production project, and sending test data to the development project only. Testing your production environment can still send internal data into your production project. Because internal user events can falsely inflate your product's metrics, you must block or filter out these events for accurate reporting.
How do I block specific users?
You can block all internal event data originating from your organization's IP address from ingestion into Amplitude Analytics. Use your project's Data Filters page to set up filters.
To set up a filter to block events from a specified IP address, follow these steps:
- From Data, navigate to Filters and click +Create Block Filter.
- In the fly-out panel that appears, choose which environment to apply the filter to.
- Select Events from the Block drop-down menu.
- Choose IP Address and equal to from the two other drop-down menus. Then enter the IP address to block.
- Click Block Data.
- Repeat steps 4 through 6 for each IP address to block.
You must be a manager or admin of your organization to add a data filter.
After you set up this filter, Amplitude drops all events sent from your list of IP addresses on ingestion.
This filter doesn't work if you've modified Amplitude's SDK configurations to prevent the collection of IP addresses. The filter only drops events whose collected IP address matches the IPs you've blocked.
How do I filter out specific users?
You can always segment out internal user events using the Segmentation Module of any Amplitude chart. Segment out users by user ID, device ID, Amplitude ID, IP address, or an identifiable user property (for example, username or email).
How do I save user segments?
You can save user segments and pin them to your charts so you don't have to recreate filters every time. When you set a saved segment as your default, Amplitude applies that segment to all new charts you create through the Create Chart or New button. The applied filter then appears on your chart.
How do I maintain user lists?
Your list of internal users can change over time, and maintaining this list takes effort when your users don't share a common attribute. In these cases, use Amplitude's behavioral cohorts feature and import a cohort of internal users to block on Amplitude.
You can apply this cohort to charts the same way you apply user properties. After you create a user segment that excludes your internal cohort, save and pin the segment for easy access.
You can also update behavioral cohorts programmatically to maintain your cohort of internal users. Review the Behavioral Cohorts API for more details.
Related resources
- Block bot web traffic: Prevent bot traffic from affecting your metrics.
- Winsorization in Experiment: Find and resolve outliers that may skew your experiment results.
Hide, block, or delete an event or property
The differences between hiding, blocking, and deleting an event or property aren't immediately clear. Hidden and blocked events and properties still count towards your project's instrumentation limit; deleted events and properties don't.
These options only appear in the menu at the top of Amplitude Data after you select an event or property.
What is a hidden event or property?
Hide an event or property when you don't want users to query on it in Amplitude charts, but still want to collect data for it.
You can hide an event or property from drop-downs, Pathfinder results, and Personas charts:
- Hiding from drop-downs means you can't select that event or property from drop-down lists in any Amplitude chart.
- When you hide the event or property from Pathfinder or Personas results, those charts' calculations exclude that event. Amplitude still ingests the data, and the event or property becomes queryable again after you unhide it.
What does blocking an event or property do?
Block an event or property when you want to continue querying historical data, but want to stop collecting new data. Blocking helps when a particular event is causing you to hit your monthly event volume limit.
When you block an event or property, Amplitude stops ingesting and processing it. Blocked events and properties that Amplitude ingested before the block remain selectable in drop-downs and usable in charts. Data sent after you create a block doesn't appear in user streams or chart results.
Blocking doesn't stop you from sending that data to Amplitude, so you still receive a success response. Amplitude drops the data before the processing stage, and you can't recover it.
What happens to deleted events and properties?
Delete an event or property that you no longer need to keep your data structure organized. Too many unnecessary events and properties can lead to hitting your project's instrumentation limit.
As with blocking, Amplitude doesn't ingest deleted events and properties, and you can't recover data sent after deletion. Unlike blocked items, deleted events and properties aren't available in drop-downs.
Charts that include a deleted event or property remain available, but you can't include the deleted item in new charts. If you removed a deleted event from a chart, you can't add it back unless you undelete it. Deleted events still appear in chart results, so to remove or hide chart data for a deleted event, create a drop filter before deleting the event.
What are the differences between hiding, blocking, and deleting?
| Blocked from ingestion | Available in data exports | Available in chart dropdowns | Count towards monthly event volume limit | Count towards 2000 event type limit | In Govern | |
|---|---|---|---|---|---|---|
| Blocked | Yes | No | Yes | No | Yes | All, Blocked |
| Deleted | Yes | No | No | No | No | Deleted |
| Hidden | No | Yes | No | Yes | Yes | All, Live, Hidden |
Modify or delete historical data
The Amplitude architecture uses pre-aggregated sets by the hour, day, week, and month for users and events. This approach scales well, but the tradeoff is that data is immutable.
How do I modify events that Amplitude has already ingested?
If your account is on the Growth or Enterprise plan, refer to Self-service data deletion in Amplitude.
For other account types, direct modification isn't possible. As a workaround:
- Export all project data using the Export API.
- Clean the data (for example, make the required changes).
- Upload the cleaned data into a new project using the Batch API.
I updated user properties using the Identify API. Why are there still 'none' values in my charts?
The Identify API only updates user property values for future events. You can't change data that Amplitude has already ingested. Send another event for Amplitude to apply the updated property value. For more details on how Amplitude updates user properties, refer to user properties and events.
I accidentally sent an event for a user. How do I delete this specific event for this specific user?
You can't. Ingested data is immutable. For similar results, try this process:
- Delete or block the event:
- This prevents the event from entering Amplitude for all users.
- The event still appears in the user's event stream, but isn't available for querying.
- If deleting or blocking doesn't work, try the workaround described in the previous FAQ.
How do I backfill historical data into Amplitude?
Refer to the Data Backfill Guide.
Date picker behavior
The datepicker selects the timeframe of the analysis you're conducting. You can choose to analyze data collected between two dates, since a specific date, or in the last x days, weeks, or months.
The datepicker has nuances in how it handles time.
Offset
When you use Last, your queries return data from the specified timeframe, plus the latest still-incomplete interval.
For example, when you set the datepicker to the last 30 days, Amplitude retrieves data from the last 30 full days, plus the hours elapsed today.
To exclude data from the incomplete day, or when you use a delayed batch ingestion system, use an offset. Click +Offset in the datepicker, then enter the number of days to offset by.
To remove the offset, click 'X' near the Offset by text.
Exclude
When you use Since or the Last x days, weeks, or months options, you can also exclude the current day, week, or month. This helps when the data for the selected timeframe isn't fully available.
To exclude the incomplete time interval from your chart, click +Exclude in the datepicker and select the Incomplete Interval option. The current date no longer appears framed in a dotted line, and Amplitude excludes it from your analysis.
Deselect Incomplete Interval to revert this setting. Use the same process to exclude or include the current week, current month, or current quarter.
Amplitude doesn't support using offset and exclude at the same time.
Exclude specific days
You can exclude specific days of the week from your analysis. This option suits organizations that operate on custom schedules. For example, retailers can exclude Sundays when stores aren't open, or SaaS companies can omit weekends to focus on workweek behavior.
Excluding specific days affects both chart visuals and metric calculations like averages and rolling windows.
Exclude specific days supports only the following chart types:
- Segmentation.
- Funnels.
- Data Tables.
- Retention.
- Sessions.
Exclude specific days supports only the following time ranges:
- Last.
- Since.
Exclude specific days doesn't work with Period over Period analysis, and it doesn't work with realtime intervals.
How Amplitude handles excluded days
When you exclude days, Amplitude:
- Removes the days from the calculations and from the chart visualization.
- For averages, calculates on the valid days in the window. For example, if you're looking at the range Sunday - Saturday (7 days) with Wednesday removed:
- For non-average time series analysis, the data shows as normal with Wednesday removed.
- For aggregate data analysis, the data doesn't count the Wednesday in the aggregation.
- For averaging analysis (such as the rolling window), Amplitude doesn't count the dropped days in the numerator or the denominator. If you have a 7-day rolling window, Amplitude treats the data point as a 0 and divides the average based on the valid days in the window (6 days in this example).
- For non-daily or non-hourly intervals analysis, Amplitude doesn't remove data from the chart or the table. However, the data still has the underlying days removed.
This method avoids artificially low averages and maintains consistent windowing on charts.
Time input
When you use Since or Between, you can narrow the range further by enabling time input. Time input lets you enter a start time or an end time to add granularity to your analysis.
The datepicker's time input feature is only available for Event Segmentation and Funnel Analysis charts.
To enable time granularity, click +Time in the datepicker. After you enable time input, enter the start or end times in hours, minutes, and seconds to accompany your selected date range.
To turn off time input, click the 'X' near the entered time.
Presets
The datepicker also supports presets to streamline repetitive analysis and ensure consistency across teams.
Using presets
Presets give you quick access to predefined time ranges, including:
- Last 7 days.
- Last month.
- Year to date.
- Custom fiscal periods.
When you select a preset, the datepicker automatically fills in the associated time range.
Custom presets
You can create custom presets for recurring analysis windows like product launches, campaigns, or testing periods. Presets can include:
- Specific start/end dates.
- Relative timeframes (for example, "Last 60 days").
- Optional exclusions (like incomplete data or specific weekdays).
Amplitude defines presets at the project level, and they're available across the project. Admins and managers can create, edit, and manage these presets in Project Settings.
Default presets
Users can also define their own default preset for a given project. This preset automatically applies when creating new charts.
New orgs can't open the menu
Why can't new users navigate the left-hand menu?
When you create a new org on Amplitude, all team members start on the Amplitude Settings page. They don't have an option to open the left-hand menu. New users can appear "stuck" on the Settings page, unable to navigate to any other page on Amplitude.
This happens because Amplitude can't populate any charts until it has data to work with. To open the left-hand menu, first set up your data sources and send data to Amplitude. After the charts have data to query on, your left menu expands and you can navigate through the Amplitude UI.
Firefox ingestion failure
Why does Firefox block the Amplitude SDK?
In Firefox, the tracking protection feature is automatically enabled in standard mode. Amplitude can't record events when you switch this feature to "strict," or when you use a private browser window. Tracking protection blocks cross-site trackers to protect user privacy when browsing across the web.
To read more about what tracking protection is and how it affects tracking, refer to Mozilla's documentation.
Because tracking protection prevents cross-site tracking, it blocks the Amplitude SDK. Firefox blocks the network requests, which causes events to fail ingestion.
The following error appears when tracking protection is enabled in the Firefox browser:
Failed POST request.
How do I fix the ingestion issue?
According to the Amplitude engineering team, the best solution is to build a proxy server and point the JS SDK at it. Refer to the documentation on how to create a proxy to learn more.
Was this helpful?