Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.

Page updated Apr 29, 2024

Use existing AWS resources

Set up existing analytics backend

The manual setup enables you to use your existing Amazon Pinpoint resource in your app.

import { Amplify } from 'aws-amplify';
// To get the AWS Credentials, you need to configure
// the Auth module with your Cognito Federated Identity Pool
Auth: {
identityPoolId: 'us-east-1:xxx-xxx-xxx-xxx-xxx',
region: 'us-east-1'
Analytics: {
// OPTIONAL - disable Analytics if true
disabled: false,
// OPTIONAL - Allow recording session events. Default is true.
autoSessionRecord: true,
AWSPinpoint: {
// OPTIONAL - Amazon Pinpoint App Client ID
appId: 'XXXXXXXXXXabcdefghij1234567890ab',
// OPTIONAL - Amazon service region
region: 'XX-XXXX-X',
// OPTIONAL - Customized endpoint
endpointId: 'XXXXXXXXXXXX',
// OPTIONAL - Default Endpoint Information
endpoint: {
address: 'xxxxxxx', // The unique identifier for the recipient. For example, an address could be a device token, email address, or mobile phone number.
attributes: {
// Custom attributes that your app reports to Amazon Pinpoint. You can use these attributes as selection criteria when you create a segment.
hobbies: ['piano', 'hiking']
channelType: 'APNS', // The channel type. Valid values: APNS, GCM
demographic: {
appVersion: 'xxxxxxx', // The version of the application associated with the endpoint.
locale: 'xxxxxx', // The endpoint locale in the following format: The ISO 639-1 alpha-2 code, followed by an underscore, followed by an ISO 3166-1 alpha-2 value
make: 'xxxxxx', // The manufacturer of the endpoint device, such as Apple or Samsung.
model: 'xxxxxx', // The model name or number of the endpoint device, such as iPhone.
modelVersion: 'xxxxxx', // The model version of the endpoint device.
platform: 'xxxxxx', // The platform of the endpoint device, such as iOS or Android.
platformVersion: 'xxxxxx', // The platform version of the endpoint device.
timezone: 'xxxxxx' // The timezone of the endpoint. Specified as a tz database value, such as Americas/Los_Angeles.
location: {
city: 'xxxxxx', // The city where the endpoint is located.
country: 'xxxxxx', // The two-letter code for the country or region of the endpoint. Specified as an ISO 3166-1 alpha-2 code, such as "US" for the United States.
latitude: 0, // The latitude of the endpoint location, rounded to one decimal place.
longitude: 0, // The longitude of the endpoint location, rounded to one decimal place.
postalCode: 'xxxxxx', // The postal code or zip code of the endpoint.
region: 'xxxxxx' // The region of the endpoint location. For example, in the United States, this corresponds to a state.
metrics: {
// Custom metrics that your app reports to Amazon Pinpoint.
/** Indicates whether a user has opted out of receiving messages with one of the following values:
* ALL (default) - User has opted out of all messages.
* NONE - Users has not opted out and receives all messages.
optOut: 'ALL',
// Customized userId
// User attributes
userAttributes: {
interests: ['football', 'basketball', 'AWS']
// ...
// Buffer settings used for reporting analytics events.
// OPTIONAL - The buffer size for events in number of items.
bufferSize: 1000,
// OPTIONAL - The interval in milliseconds to perform a buffer check and flush if necessary.
flushInterval: 5000, // 5s
// OPTIONAL - The number of events to be deleted from the buffer when flushed.
flushSize: 100,
// OPTIONAL - The limit for failed recording retries.
resendLimit: 5

Update your IAM Policy

Amazon Pinpoint service requires an IAM policy in order to use the record API:

"Version": "2012-10-17",
"Statement": [
"Effect": "Allow",
"Action": ["mobiletargeting:UpdateEndpoint", "mobiletargeting:PutEvents"],
"Resource": ["arn:aws:mobiletargeting:*:${accountID}:apps/${appId}*"]