{"_id":"55781fe45129590d003ff51b","user":"54aa7f3f9bb00c0b00cb899b","category":{"_id":"55781fe35129590d003ff4fb","version":"55781fe25129590d003ff4f7","__v":11,"pages":["55781fe45129590d003ff517","55781fe45129590d003ff518","55781fe45129590d003ff519","55781fe45129590d003ff51a","55781fe45129590d003ff51b","55781fe45129590d003ff51c","55781fe45129590d003ff51d","55781fe45129590d003ff51e","55781fe45129590d003ff51f","55781fe45129590d003ff520","55781fe45129590d003ff521","55781fe45129590d003ff522","5579ab5fc7fb3f2100096fad","55f7de1660cc850d008a7a22","55f7e1fbe32e9b0d00a2d4d0","561f72bacec1a50d00979598","561f764f61c0521700acc428","563337539c607719001b85dd","564318f1f49bfa0d002f5566","564f03454f000617007bd670","565ee80a23fd5f0d00a129f9","56793cd73473bc0d008e141b"],"project":"54aa7f773b56130b0056c86e","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-01-05T12:43:51.897Z","from_sync":false,"order":3,"slug":"ios-sdk","title":"iOS SDK"},"githubsync":"","parentDoc":null,"project":"54aa7f773b56130b0056c86e","version":{"_id":"55781fe25129590d003ff4f7","project":"54aa7f773b56130b0056c86e","forked_from":"54aa7f773b56130b0056c871","__v":8,"createdAt":"2015-06-10T11:30:42.700Z","releaseDate":"2015-06-10T11:30:42.700Z","categories":["55781fe35129590d003ff4f8","55781fe35129590d003ff4f9","55781fe35129590d003ff4fa","55781fe35129590d003ff4fb","55781fe35129590d003ff4fc","55781fe35129590d003ff4fd","55781fe35129590d003ff4fe","564bbc7e8841060d00abb2ee","565b66c446118c0d00dcb0bb","56898269f8dc340d00308c13","582318b23b961a0f009516a1","594a848c9f4771001a43c959","5c73dd27e8fdc000572a206a","5c77ac5af94a920045cb80ca"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"Developers","version_clean":"2.0.0","version":"2.0"},"__v":9,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-05-13T14:13:49.504Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":5,"body":"[block:callout]\n{\n  \"type\": \"success\",\n  \"title\": \"\",\n  \"body\": \"Please make sure that you're familiar with the [Running the Pulsate SDK](https://pulsate.readme.io/v2.0/docs/running-the-pulsate-sdk) tutorial.\"\n}\n[/block]\nPulsate collects all data anonymously unless you explicitly decide to pass personal data such as an email address or the first and last name of a customer to Pulsate. It is vital that you have your customers'/users' permission to send any personal data to Pulsate including their full name and/ or email address. It is also important that you are aware of all regulations related to customer data and privacy including GDPR. More info on Pulsate's GDPR and privacy policies can be found [here](https://pulsate.readme.io/v4.0/docs/introduction).\n\nFirst name is particularly useful because it can be used to dynamically personalize the user's experience. Many Pulsate customers send us their user's first name but not other personal data such as last name or email. \n\nTo pass a customers first name, last name and email address simply invoke the *updateFirstName*, *updateLastName* or *updateEmail* method on the *PULPulsateManager* object:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"[pulsateManager updateFirstName::::at:::\\\"John\\\"]\\n[pulsateManager updateLastName:@\\\"Smith\\\"];\\n[pulsateManager updateEmail:@\\\"p@pulsatehq.com\\\"]\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"pulsateManager.updateFirstName(\\\"John\\\")\\npulsateManager.updateLastName(\\\"Smith\\\")\\npulsateManager.updateEmail(\\\"p@pulsatehq.com\\\")\",\n      \"language\": \"swift\"\n    }\n  ]\n}\n[/block]\nThe data will be stored locally and sent to the Pulsate server the next time synchronization occurs. Developers can force an synchronization by calling the *forceAttributeSync* method.\n\n\nAlways remember to send user data only after a user session has already started. Developers can use the *startPulsateSession* and  *startPulsateSessionForAlias* callbacks to do that. \n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"[manager startPulsateSession:^(BOOL success, NSError * _Nullable error) {\\n  if (success)\\n  {\\n    [pulsateManager updateFirstName:@\\\"John\\\"]\\n    [pulsateManager updateLastName:@\\\"Smith\\\"];\\n    [pulsateManager updateEmail:@\\\"p@pulsatehq.com\\\"]\\n  }\\n}];\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"[manager startPulsateSessionForAlias:a withListener:^(BOOL success, NSError * _Nullable error) {\\n  if (success)\\n  {\\n\\t\\t[pulsateManager updateFirstName:@\\\"John\\\"]\\n    [pulsateManager updateLastName:@\\\"Smith\\\"];\\n    [pulsateManager updateEmail:@\\\"p@pulsatehq.com\\\"]\\n  }\\n}];\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"passing-user-information-to-pulsate","type":"basic","title":"Passing Customer Data to Pulsate"}

Passing Customer Data to Pulsate


[block:callout] { "type": "success", "title": "", "body": "Please make sure that you're familiar with the [Running the Pulsate SDK](https://pulsate.readme.io/v2.0/docs/running-the-pulsate-sdk) tutorial." } [/block] Pulsate collects all data anonymously unless you explicitly decide to pass personal data such as an email address or the first and last name of a customer to Pulsate. It is vital that you have your customers'/users' permission to send any personal data to Pulsate including their full name and/ or email address. It is also important that you are aware of all regulations related to customer data and privacy including GDPR. More info on Pulsate's GDPR and privacy policies can be found [here](https://pulsate.readme.io/v4.0/docs/introduction). First name is particularly useful because it can be used to dynamically personalize the user's experience. Many Pulsate customers send us their user's first name but not other personal data such as last name or email. To pass a customers first name, last name and email address simply invoke the *updateFirstName*, *updateLastName* or *updateEmail* method on the *PULPulsateManager* object: [block:code] { "codes": [ { "code": "[pulsateManager updateFirstName:@\"John\"]\n[pulsateManager updateLastName:@\"Smith\"];\n[pulsateManager updateEmail:@\"p@pulsatehq.com\"]", "language": "objectivec" } ] } [/block] [block:code] { "codes": [ { "code": "pulsateManager.updateFirstName(\"John\")\npulsateManager.updateLastName(\"Smith\")\npulsateManager.updateEmail(\"p@pulsatehq.com\")", "language": "swift" } ] } [/block] The data will be stored locally and sent to the Pulsate server the next time synchronization occurs. Developers can force an synchronization by calling the *forceAttributeSync* method. Always remember to send user data only after a user session has already started. Developers can use the *startPulsateSession* and *startPulsateSessionForAlias* callbacks to do that. [block:code] { "codes": [ { "code": "[manager startPulsateSession:^(BOOL success, NSError * _Nullable error) {\n if (success)\n {\n [pulsateManager updateFirstName:@\"John\"]\n [pulsateManager updateLastName:@\"Smith\"];\n [pulsateManager updateEmail:@\"p@pulsatehq.com\"]\n }\n}];", "language": "objectivec" } ] } [/block] [block:code] { "codes": [ { "code": "[manager startPulsateSessionForAlias:a withListener:^(BOOL success, NSError * _Nullable error) {\n if (success)\n {\n\t\t[pulsateManager updateFirstName:@\"John\"]\n [pulsateManager updateLastName:@\"Smith\"];\n [pulsateManager updateEmail:@\"p@pulsatehq.com\"]\n }\n}];", "language": "objectivec" } ] } [/block]