From 4a43c5205e96bbd62f5e04d6b050d2c70a8f9895 Mon Sep 17 00:00:00 2001 From: Muhammad-Owais-Warsi Date: Wed, 1 Oct 2025 20:33:27 +0100 Subject: [PATCH 1/2] advanced event filtering in usage based billing --- .../event-filtering-usage-based-billing.mdx | 187 ++++++++++++++++++ docs.json | 1 + .../event-filtering.png | Bin 0 -> 38711 bytes 3 files changed, 188 insertions(+) create mode 100644 developer-resources/event-filtering-usage-based-billing.mdx create mode 100644 images/guides/advanced-event-filtering-ubb/event-filtering.png diff --git a/developer-resources/event-filtering-usage-based-billing.mdx b/developer-resources/event-filtering-usage-based-billing.mdx new file mode 100644 index 0000000..82c3b98 --- /dev/null +++ b/developer-resources/event-filtering-usage-based-billing.mdx @@ -0,0 +1,187 @@ +--- +title: Advanced Event Filtering in Usage Based Billing. +description: This guide demonstrates how to implement advanced event fltering in Usage Based Billing. +icon: "credit-card" +--- + + +## Creating a Meter + +Meters define how your usage events are aggregated and measured for billing purposes. + +Before creating a meter, plan your usage tracking strategy: +- Identify what usage events you want to track +- Determine how events should be aggregated (count, sum, etc.) +- Define any filtering requirements for specific use cases + +### Step-by-Step Meter Creation + +Follow this comprehensive guide to set up your usage meter: + + + +Set up the fundamental details for your meter. + + +Choose a clear, descriptive name that identifies what this meter tracks. + +Examples: "Tokens", "API Calls", "Storage Usage", "Compute Hours" + + + +Provide a detailed explanation of what this meter measures. + +Example: "Counts each POST /v1/orders request made by the customer" + + + +Specify the event identifier that will trigger this meter. + +Examples: "token", "api.call", "storage.usage", "compute.session" + + + +The event name must match exactly what you send in your usage events. Event names are case-sensitive. + + + + +Define how the meter calculates usage from your events. + + +Select how events should be aggregated: + + + +Simply counts the number of events received. + +Use case: API calls, page views, file uploads + +Calculation: Total number of events + + + +Adds up values from a specific property in your events. + +Use case: Data transfer, storage consumption, processing time + +Calculation: Sum of all property values + + + + +Records the highest value of a specific property during the billing period. + +Use case: Peak concurrent users, maximum storage used, highest bandwidth + +Calculation: Maximum property value observed + + + +Uses the most recent value of a specific property. + +Use case: Current plan tier, latest configuration setting + +Calculation: Last recorded property value + + + + + +The property name from event metadata to aggregate over. + + +This field is required when using Sum, Max, or Last aggregation types. + + + + +Define the unit label for display purposes in reports and billing. + +Examples: "calls", "GB", "hours", "tokens" + + + + +Set up criteria to control which events are included in the meter. + + +**Enable Event Filtering** + +Toggle **Enable Event Filtering** to activate conditional event processing. + +**Choose Filter Logic** + +Select how multiple conditions are evaluated: + + + Event Filtering + + + + Filters in the image means any event with status code of `200` at `/v1/api` by the customer with `premium` plan under `14th` hour will be counted and else ignored. + + + + +All conditions must be true for an event to be counted. Use this when you need events to meet multiple strict criteria simultaneously. + +**Example:** Count API calls where `user_tier = "premium"` AND `endpoint = "/api/v2/users"` + + + +At least one condition must be true for an event to be counted. Use this when you want to include events that meet any of several criteria. + +**Example:** Count events where `method = "POST"` OR `method = "PUT"` OR `method = "DELETE"` + + + +**Setting Up Filter Conditions** + + + +Click **Add condition** to create a new filter rule. + + + +Specify the property name from your event metadata. + + + +Choose from available operators: +- `equals` - Exact match +- `not equals` - Exclusion filter +- `greater than` - Numeric comparison +- `greater than or equals` - Numeric comparison (inclusive) +- `less than` - Numeric comparison +- `less than or equals` - Numeric comparison (inclusive) +- `contains` - String contains substring +- `does not contain` - String exclusion filter + + + +Set the target value for comparison. + + + +Use **Add Group** to create additional condition groups for complex logic. + + + + + +Filtered properties must be included in your event metadata for the conditions to work properly. Events missing required properties will be excluded from counting. + + + + +Review your meter configuration and click on **Create Meter**. + + +Your meter is now ready to receive and aggregate usage events. + + + + + +This is how we can implement advanced events filtering in Usage Based Billing. \ No newline at end of file diff --git a/docs.json b/docs.json index 38b059c..31f9269 100644 --- a/docs.json +++ b/docs.json @@ -125,6 +125,7 @@ "pages": [ "developer-resources/checkout-session", "developer-resources/usage-based-billing-guide", + "developer-resources/event-filtering-usage-based-billing", "developer-resources/integration-guide", "developer-resources/subscription-integration-guide", "developer-resources/integration-tutorial", diff --git a/images/guides/advanced-event-filtering-ubb/event-filtering.png b/images/guides/advanced-event-filtering-ubb/event-filtering.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ef5c099684ba08e2f00cc80d9d1c96b9fd92cb GIT binary patch literal 38711 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 Date: Fri, 3 Oct 2025 13:58:36 +0100 Subject: [PATCH 2/2] fix typo --- developer-resources/event-filtering-usage-based-billing.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/developer-resources/event-filtering-usage-based-billing.mdx b/developer-resources/event-filtering-usage-based-billing.mdx index 82c3b98..a92f837 100644 --- a/developer-resources/event-filtering-usage-based-billing.mdx +++ b/developer-resources/event-filtering-usage-based-billing.mdx @@ -1,6 +1,6 @@ --- title: Advanced Event Filtering in Usage Based Billing. -description: This guide demonstrates how to implement advanced event fltering in Usage Based Billing. +description: This guide demonstrates how to implement advanced event filtering in Usage Based Billing. icon: "credit-card" ---