Retrieves activity logs for all subscription-related events and changes in the authenticated shop. Activity logs provide a comprehensive audit trail of all subscription activities, changes, and system events.
What are Activity Logs? Activity logs are detailed records of every action, event, and change that occurs within your subscription system. They capture who made the change, when it happened, what was changed, and the result of the operation. This provides full traceability and audit capabilities for compliance, debugging, and customer support.
Log Information Captured:
Entity Information:
Event Details:
Entity Types:
SUBSCRIPTION_BILLING_ATTEMPT - Billing and payment attempt eventsSUBSCRIPTION_CONTRACT_DETAILS - Subscription contract modificationsSUBSCRIPTION_GROUP_PLAN - Subscription plan changesSHIPPING_PROFILE - Delivery profile and shipping updatesCANCELLATION_MANAGEMENT - Subscription cancellation eventsDUNNING_MANAGEMENT - Payment retry and dunning activitiesPRODUCT_SWAP - Product replacement eventsFREQUENCY_SWAP - Billing/delivery frequency changesEMAIL_TEMPLATE - Email template modificationsSHOP_INFO - Shop settings and configuration changesSUBSCRIPTION_WIDGET_SETTINGS - Widget configuration updatesCUSTOMER_PORTAL_SETTINGS - Portal settings modificationsSUBSCRIPTION_BUNDLING - Bundle and bundling rule changesEvent Sources:
CUSTOMER_PORTAL - Changes made by subscribers through the customer portalMERCHANT_PORTAL - Changes made by merchants in the admin panelMERCHANT_EXTERNAL_API - Changes made via API by merchants or integrationsSHOPIFY_EVENT - Events triggered by Shopify webhooksSHOPIFY_FLOW - Events triggered by Shopify Flow automationsSYSTEM_EVENT - Automated system events (scheduled tasks, sync operations)MERCHANT_PORTAL_BULK_AUTOMATION - Bulk operations initiated from admin panelCommon Event Types:
Query Parameters and Filtering:
You can filter activity logs using query parameters. All filters support standard operations:
equals - Exact matchin - Match any value in listgreaterThan, lessThan - Date range filteringcontains - Partial text matchExample Filter Queries:
Get all failed billing attempts:
?entityType.equals=SUBSCRIPTION_BILLING_ATTEMPT&eventType.equals=BILLING_ATTEMPT_TRIGGERED&status.equals=FAILURE
Get all customer portal changes:
?eventSource.equals=CUSTOMER_PORTAL
Get logs for a specific subscription:
?entityId.equals=123456&entityType.equals=SUBSCRIPTION_CONTRACT_DETAILS
Get logs within date range:
?createAt.greaterThan=2024-01-01T00:00:00Z&createAt.lessThan=2024-01-31T23:59:59Z
Get all cancellation events:
?eventType.equals=CONTRACT_CANCELLED
Get all API-triggered changes:
?eventSource.equals=MERCHANT_EXTERNAL_API
Pagination:
Results are paginated. Use standard Spring Data pagination parameters:
page - Page number (zero-indexed, default: 0)size - Page size (default: 20, max: 100)sort - Sort criteria (e.g., createAt,desc or id,asc)Example: ?page=0&size=50&sort=createAt,desc
Use Cases:
Important Notes:
additionalInfo field contains detailed JSON with event-specific contextactivityBy value as they’re automatedResponse Headers:
X-Total-Count - Total number of matching recordsLink - Pagination links (first, last, next, prev)Authentication: Requires valid api_key query parameter with appropriate permissions
curl --request GET \
--url https://subscription-admin.appstle.com/api/external/v2/activity-logs[
{
"id": 789012,
"shop": "example-shop.myshopify.com",
"entityId": 123456,
"entityType": "SUBSCRIPTION_CONTRACT_DETAILS",
"eventSource": "CUSTOMER_PORTAL",
"eventType": "NEXT_BILLING_DATE_CHANGE",
"status": "SUCCESS",
"createAt": "2024-02-15T10:30:45Z",
"additionalInfo": "{\"oldDate\":\"2024-03-01\",\"newDate\":\"2024-03-15\",\"reason\":\"Customer requested delay\"}",
"activityBy": "customer@example.com",
"clientIp": "192.168.1.100"
},
{
"id": 789013,
"shop": "example-shop.myshopify.com",
"entityId": 123456,
"entityType": "SUBSCRIPTION_CONTRACT_DETAILS",
"eventSource": "CUSTOMER_PORTAL",
"eventType": "PRODUCT_ADD",
"status": "SUCCESS",
"createAt": "2024-02-15T11:15:22Z",
"additionalInfo": "{\"variantId\":987654321,\"quantity\":2,\"productTitle\":\"Premium Coffee Beans\",\"price\":\"24.99\"}",
"activityBy": "customer@example.com",
"clientIp": "192.168.1.100"
},
{
"id": 789014,
"shop": "example-shop.myshopify.com",
"entityId": 456789,
"entityType": "SUBSCRIPTION_BILLING_ATTEMPT",
"eventSource": "SYSTEM_EVENT",
"eventType": "BILLING_ATTEMPT_TRIGGERED",
"status": "FAILURE",
"createAt": "2024-02-15T08:00:00Z",
"additionalInfo": "{\"amount\":\"49.99\",\"currency\":\"USD\",\"errorCode\":\"INSUFFICIENT_FUNDS\",\"errorMessage\":\"Card declined - insufficient funds\"}",
"activityBy": null,
"clientIp": null
},
{
"id": 789015,
"shop": "example-shop.myshopify.com",
"entityId": 123456,
"entityType": "SUBSCRIPTION_CONTRACT_DETAILS",
"eventSource": "MERCHANT_PORTAL",
"eventType": "CONTRACT_PAUSED",
"status": "SUCCESS",
"createAt": "2024-02-14T16:45:30Z",
"additionalInfo": "{\"pauseReason\":\"Customer on vacation\",\"pauseDuration\":30,\"resumeDate\":\"2024-03-15\"}",
"activityBy": "merchant-admin@example.com",
"clientIp": "203.0.113.45"
},
{
"id": 789016,
"shop": "example-shop.myshopify.com",
"entityId": 789123,
"entityType": "PRODUCT_SWAP",
"eventSource": "MERCHANT_EXTERNAL_API",
"eventType": "PRODUCT_REPLACE",
"status": "SUCCESS",
"createAt": "2024-02-14T14:20:15Z",
"additionalInfo": "{\"oldVariantId\":111222333,\"newVariantId\":444555666,\"oldProductTitle\":\"Regular Coffee\",\"newProductTitle\":\"Premium Coffee\",\"priceChange\":5.00}",
"activityBy": "api-integration",
"clientIp": "198.51.100.25"
}
]Documentation Index
Fetch the complete documentation index at: https://developers.appstle.com/llms.txt
Use this file to discover all available pages before exploring further.
Your API Key
Activity Log Search Criteria
Show child attributes
Pagination parameters (page number and size)
Show child attributes
Activity logs successfully retrieved. Returns paginated list of activity log entries.
SUBSCRIPTION_BILLING_ATTEMPT, SUBSCRIPTION_CONTRACT_DETAILS, SUBSCRIPTION_GROUP_PLAN, SHIPPING_PROFILE, CANCELLATION_MANAGEMENT, DUNNING_MANAGEMENT, PRODUCT_SWAP, FREQUENCY_SWAP, EMAIL_TEMPLATE, SHOP_INFO, SUBSCRIPTION_WIDGET_SETTINGS, CUSTOMER_PORTAL_SETTINGS, SUBSCRIPTION_BUNDLING, BULK_AUTOMATION, PARTNER_CONNECTION CUSTOMER_PORTAL, MERCHANT_PORTAL, SHOPIFY_EVENT, SYSTEM_EVENT, MERCHANT_PORTAL_BULK_AUTOMATION, MERCHANT_EXTERNAL_API, SHOPIFY_FLOW NEXT_BILLING_DATE_CHANGE, NEXT_BILLING_TIME_CHANGE, BILLING_INTERVAL_CHANGE, DELIVERY_INTERVAL_CHANGE, BILLING_ATTEMPT_TRIGGERED, BILLING_ATTEMPT_SKIPPED, IMMEDIATE_ORDER_RATE_LIMIT_BLOCKED, PRICING_POLICY_ESCALATION_BLOCKED, BILLING_AMOUNT_ESCALATION_BLOCKED, PRODUCT_ADD, PRODUCT_REMOVE, PRODUCT_REPLACE, PRODUCT_QUANTITY_CHANGE, PRODUCT_PRICE_CHANGE, PRODUCT_PRICING_POLICY_CHANGE, PRODUCT_SELLING_PLAN_CHANGE, PRODUCT_DELETED_SYNC, CONTRACT_PAUSED, CONTRACT_ACTIVATED, CONTRACT_ACTIVATION_DEFERRED, CONTRACT_CANCELLED, DELIVERY_METHOD_UPDATED, SYSTEM_UPDATED_DELIVERY_PRICE, MANUAL_DELIVERY_PRICE_UPDATED, DELIVERY_PRICE_OVERRIDE_CHANGED, SHIPPING_ADDRESS_CHANGE, SHIPPING_ADDRESS_CHANGE_SYNC, SEND_SUBSCRIPTION_CREATED_EMAIL, SEND_TRANSACTION_FAILED_EMAIL, SEND_UPCOMING_ORDER_EMAIL, SEND_EXPIRING_CREDIT_CARD_EMAIL, SEND_SHIPPING_ADDRESS_UPDATED_EMAIL, SEND_ORDER_FREQUENCY_UPDATED_EMAIL, SEND_NEXT_ORDER_DATE_UPDATED_EMAIL, SEND_SUBSCRIPTION_PAUSED_EMAIL, SEND_SUBSCRIPTION_CANCELED_EMAIL, SEND_SUBSCRIPTION_RESUMED_EMAIL, SEND_SUBSCRIPTION_PRODUCT_ADDED_EMAIL, SEND_SUBSCRIPTION_PRODUCT_REMOVED_EMAIL, SEND_SUBSCRIPTION_PRODUCT_REPLACED_EMAIL, SEND_ORDER_SKIPPED_EMAIL, ONE_TIME_PURCHASE_PRODUCT_ADDED, ONE_TIME_PURCHASE_PRODUCT_REMOVED, ONE_TIME_PURCHASE_PRODUCT_UPDATE, SEND_SECURITY_CHALLENGE_EMAIL, DISCOUNT_APPLIED, DISCOUNT_REMOVED, DUNNING_CANCELLED, DUNNING_SKIPPED, DUNNING_PAUSED, DUNNING_ATTEMPT_SKIPPED, BILLING_ATTEMPT_NOTIFICATION, SEND_SUBSCRIPTION_MANAGEMENT_LINK, PRICE_CHANGE_SYNC, UPDATE_QUEUED_ATTEMPTS, WEBHOOK, SPLIT_CONTRACT, SWITCH_PAYMENT_METHODS, PAYMENT_METHOD_UPDATED, SEND_OUT_OF_STOCK_EMAIL, INFORMATIONAL_EVENT, BULK_EMAIL, CONTRACT_CREATED, INITIAL_CONTRACT_INFO, ANCHOR_DAY_REMOVED, UPCOMING_ORDER_UPDATED, SUBSCRIPTION_CONTRACT_UPDATED, BILLING_ATTEMPT_UPDATED, RESCHEDULE_FULFILLMENT, FULFILLMENT_REFUNDED, SWAP_AUTOMATION_TRIGGERED, BAB_DISCOUNT_ADJUSTMENT, BAB_PRODUCT_ADD, BAB_PRODUCT_REMOVE, BAB_QUANTITY_CHANGE, STOP_UPCOMING_ORDER_EMAIL_UPDATED, ORDER_TAGS_ADDED, EMAIL, SEND_TRANSACTION_SUCCESS_EMAIL, TAGS_UPDATED, SEND_PRODUCT_PRICE_UPDATED_EMAIL, SUBSCRIPTION_GROUP_PLAN_UPDATE, SUBSCRIPTION_GROUP_PLAN_CREATE, SUBSCRIPTION_GROUP_PLAN_DELETE, CREATED, UPDATED, SEND_SUSPENSION_EMAIL, SEND_SUSPENSION_WARNING_EMAIL, DELETED, CURRENCY_MISMATCH_DETECTED, PRICING_METHOD_APPLIED, PRICING_POLICY_DISCOUNT_APPLIED, PRICING_POLICY_SYNC_SKIPPED, PRICING_POLICY_SYNC_FAILED, PRICING_POLICY_NO_APPLICABLE_CYCLE, PRICING_POLICY_REMOVED, PRICING_POLICY_OVERRIDE, AUTOMATIC_DISCOUNT_UPDATE, BILLING_ATTEMPT_REFRESHED, PRICE_CHANGE_SYNC_SKIPPED, BASE_PRICE_CALCULATION, LINE_DUTY_ADDED, IMMEDIATE_RETRY_TRIGGERED, PRICE_CHANGE_SYNC_BULK_AUTOMATION, SCHEDULE_EXPIRING_CREDIT_CARD_EMAIL, STARTED_BULK_AUTOMATION_PROCESSING, DUPLICATE_BILLING_ATTEMPT_DETECTED, AUTO_RESUME_SCHEDULED, BILLING_CYCLE_PRODUCTS_SKIPPED, ORDER_ATTRIBUTES_SYNCED, DATE_ATTRIBUTE_MODIFIED_BEFORE_SYNC, ORDER_DATE_SYNC_FAILED, DELIVERY_DATE_SETTINGS_APPLIED, ORPHANED_SELLING_PLAN_DETECTED, BUNDLE_DISCOUNT_PERCENTAGE_ROUNDED, PARTNER_CONNECTED, PARTNER_DISCONNECTED, PARTNER_CONNECTION_REQUESTED, PARTNER_CONNECTION_APPROVED, PARTNER_CONNECTION_REJECTED, STORE_CREDIT_DISCOUNT_APPLIED, UPDATE_STORE_CREDIT, SKIP_PAYMENT_ENABLED, PREPAID_DEFERRED_CANCELLATION_SCHEDULED, PREPAID_DEFERRED_CANCELLATION_EXECUTED, PREPAID_DEFERRED_CANCELLATION_CLEARED, CURRENCY_ADJUSTMENT_RECOVERY, PRICING_POLICY_SUPPRESSED_FOR_MIGRATED_CONTRACT, PRICING_POLICY_SKIPPED_MIGRATED_BY_STRATEGY SUCCESS, FAILURE, INFO, SKIPPED, PARTIAL_FAILURE curl --request GET \
--url https://subscription-admin.appstle.com/api/external/v2/activity-logs[
{
"id": 789012,
"shop": "example-shop.myshopify.com",
"entityId": 123456,
"entityType": "SUBSCRIPTION_CONTRACT_DETAILS",
"eventSource": "CUSTOMER_PORTAL",
"eventType": "NEXT_BILLING_DATE_CHANGE",
"status": "SUCCESS",
"createAt": "2024-02-15T10:30:45Z",
"additionalInfo": "{\"oldDate\":\"2024-03-01\",\"newDate\":\"2024-03-15\",\"reason\":\"Customer requested delay\"}",
"activityBy": "customer@example.com",
"clientIp": "192.168.1.100"
},
{
"id": 789013,
"shop": "example-shop.myshopify.com",
"entityId": 123456,
"entityType": "SUBSCRIPTION_CONTRACT_DETAILS",
"eventSource": "CUSTOMER_PORTAL",
"eventType": "PRODUCT_ADD",
"status": "SUCCESS",
"createAt": "2024-02-15T11:15:22Z",
"additionalInfo": "{\"variantId\":987654321,\"quantity\":2,\"productTitle\":\"Premium Coffee Beans\",\"price\":\"24.99\"}",
"activityBy": "customer@example.com",
"clientIp": "192.168.1.100"
},
{
"id": 789014,
"shop": "example-shop.myshopify.com",
"entityId": 456789,
"entityType": "SUBSCRIPTION_BILLING_ATTEMPT",
"eventSource": "SYSTEM_EVENT",
"eventType": "BILLING_ATTEMPT_TRIGGERED",
"status": "FAILURE",
"createAt": "2024-02-15T08:00:00Z",
"additionalInfo": "{\"amount\":\"49.99\",\"currency\":\"USD\",\"errorCode\":\"INSUFFICIENT_FUNDS\",\"errorMessage\":\"Card declined - insufficient funds\"}",
"activityBy": null,
"clientIp": null
},
{
"id": 789015,
"shop": "example-shop.myshopify.com",
"entityId": 123456,
"entityType": "SUBSCRIPTION_CONTRACT_DETAILS",
"eventSource": "MERCHANT_PORTAL",
"eventType": "CONTRACT_PAUSED",
"status": "SUCCESS",
"createAt": "2024-02-14T16:45:30Z",
"additionalInfo": "{\"pauseReason\":\"Customer on vacation\",\"pauseDuration\":30,\"resumeDate\":\"2024-03-15\"}",
"activityBy": "merchant-admin@example.com",
"clientIp": "203.0.113.45"
},
{
"id": 789016,
"shop": "example-shop.myshopify.com",
"entityId": 789123,
"entityType": "PRODUCT_SWAP",
"eventSource": "MERCHANT_EXTERNAL_API",
"eventType": "PRODUCT_REPLACE",
"status": "SUCCESS",
"createAt": "2024-02-14T14:20:15Z",
"additionalInfo": "{\"oldVariantId\":111222333,\"newVariantId\":444555666,\"oldProductTitle\":\"Regular Coffee\",\"newProductTitle\":\"Premium Coffee\",\"priceChange\":5.00}",
"activityBy": "api-integration",
"clientIp": "198.51.100.25"
}
]