Identify your attendees using personalized links

If you need to identify your attendees in MeetingPulse programmatically, then personalized links are a convenient solution. There are two ways to do this.

Required

Client identifier and secret key

Issued by MeetingPulse upon request

Customer Data

For each attendee, provide

  • Name

  • Email (optional)

Setup

Steps to create personalized links for attendees to join your meeting.

Note: the keys shown here are just examples.

1. Generate the payload

Compose a JSON with the data you'll be passing:

{
"client": "mycompanyname",
"id": "100500",
"name": "John Doe",
"email": "doe@example.com",
"signature": ""
}

Email is a mandatory field. Please set it to an empty string if you don’t want to send the email. The email passed in the payload will be included in several CSV exports, as will the id, as “External ID”.

2. Get the signature for the payload

Concatenate the customer’s secret with all the fields of the payload (id, name, email). For the above, given an example secret key of "mysecret", it would be:

mysecret100500John Doedoe@example.com

 

Hash that string via SHA-256, make sure it's lowercase hex notation, and you'll get:

907cf4666f4690888f48d7b04844138d170aad80df57a63f59572294fc5f6820

 

Add that as a "signature" parameter to your payload.

3. Prepare the meeting

You'll need to set up the related meeting in the application.

 

Important: If you have access to the "Anonymize" meeting option, make sure it is disabled, otherwise the names you pass won't be associated with the participants at all.

4. Add the payload to the url

Here’s an example meeting URL you want to open or embed on your page:

 

https://app.meet.ps/attendee/my-embedded-meeting

 

Have the payload base-64 encoded and URL-escaped, turning it into a sequence:

 

ewogICAgImNsaWVudCI6ICJteWNvbXBhbnluYW1lIiwKICAgICJpZCI6ICIxMDA1MDAiLAogICAgIm5hbWUiOiAiSm9obiBEb2UiLAogICAgImVtYWlsIjogImRvZUBleGFtcGxlLmNvbSIsCiAgICAic2lnbmF0dXJlIjogIjkwN2NmNDY2NmY0NjkwODg4ZjQ4ZDdiMDQ4NDQxMzhkMTcwYWFkODBkZjU3YTYzZjU5NTcyMjk0ZmM1ZjY4MjAiCn0K

 

Note: the string above is generated for the example payload respecting the whitespaces used in this document; your string may differ.

 

Take that sequence and append it as a query string parameter "i" to the URL. This creates a usable URL:

 

https://app.meet.ps/attendee/my-embedded-meeting?i=ewogICAgImNsaWVudCI6ICJteWNvbXBhbnluYW1lIiwKICAgICJpZCI6ICIxMDA1MDAiLAogICAgIm5hbWUiOiAiSm9obiBEb2UiLAogICAgImVtYWlsIjogImRvZUBleGFtcGxlLmNvbSIsCiAgICAic2lnbmF0dXJlIjogIjkwN2NmNDY2NmY0NjkwODg4ZjQ4ZDdiMDQ4NDQxMzhkMTcwYWFkODBkZjU3YTYzZjU5NTcyMjk0ZmM1ZjY4MjAiCn0K

Enjoy!

To confirm your name in attendee view, look to the Info slide. You can also submit questions or comments in Q&A. You’ll be able to see the external ID passed in the CSV exports.

 

Signing-in already invited attendees

This is an alternative to the default method of providing attendee names through URL. You can lock the meeting with custom codes and then create a token with the access codes.

Prerequisites

Access to the database containing your audience information. It's highly advisable that your user entries contain password-like unique values for each item. If that's not an option, a user identifier will also do.

Setup

The core assumption of this setup is that your users each have a unique key, preferably something random, but a user identifier will also do in its place.

Generate and upload the CSV data file

Follow these instructions to generate a CSV file listing your intended audience. Keep a column called "code" which would hold a password-like unique value for each of your attendees as mentioned earlier. Make sure to add all the extra data you want (custom fields, schedule configuration etc).


Double-check to ensure that the meeting would require attendees to provide their personal codes to enter (through Settings > Access and Identity > Require Custom Access Code).

Generate the payload

The next steps are similar to the earlier setup steps to generate access URLs. Key differences are:

  • You need to provide the name of your meeting in the payload;

  • The attendee ID in the payload uses the value you've previously referenced in the "code" column in the data CSV.

 

Your example payload in this case before serialization would look like this:

{

"client": "mycompanyname",

"id": "100500",

"meeting": "my-code-join-example-mtg",

"signature": "0903b0f2ed40ca6f258ca6550d51cf4a5c06ff38bd5c80628868c71b0fd6a1c6"

}

 

No usual email or name is required here - this data is to be passed through the initial attendee CSV.

 

The signature above gets computed the same way as in the default case - by concatenating your client secret, the attendee code, and the meeting name, then generating a SHA256 hash out of it. The example uses the secret of mysecret.

 

 

Add the payload to the URL (same as above).

Here’s an example meeting URL you want to open or embed on your page:

 

https://app.meet.ps/attendee/my-embedded-meeting

 

Have the payload base-64 encoded and URL-escaped, turning it into a sequence:

 

ewogICAgImNsaWVudCI6ICJteWNvbXBhbnluYW1lIiwKICAgICJpZCI6ICIxMDA1MDAiLAogICAgIm5hbWUiOiAiSm9obiBEb2UiLAogICAgImVtYWlsIjogImRvZUBleGFtcGxlLmNvbSIsCiAgICAic2lnbmF0dXJlIjogIjkwN2NmNDY2NmY0NjkwODg4ZjQ4ZDdiMDQ4NDQxMzhkMTcwYWFkODBkZjU3YTYzZjU5NTcyMjk0ZmM1ZjY4MjAiCn0K

 

Note: the string above is generated for the example payload respecting the whitespaces used in this document; your string may differ.

 

Take that sequence and append it as a query string parameter "i" to the URL. This creates a usable URL:

 

https://app.meet.ps/attendee/my-embedded-meeting?i=ewogICAgImNsaWVudCI6ICJteWNvbXBhbnluYW1lIiwKICAgICJpZCI6ICIxMDA1MDAiLAogICAgIm5hbWUiOiAiSm9obiBEb2UiLAogICAgImVtYWlsIjogImRvZUBleGFtcGxlLmNvbSIsCiAgICAic2lnbmF0dXJlIjogIjkwN2NmNDY2NmY0NjkwODg4ZjQ4ZDdiMDQ4NDQxMzhkMTcwYWFkODBkZjU3YTYzZjU5NTcyMjk0ZmM1ZjY4MjAiCn0K

 

Examples

Passing attendee names and emails

Client: trial

Secret:

Fr2Df8kQ9v5Sqg3G (Example)

 

 

Payload:

{

"client": "trial",

"id": "1234567",

"name": "Emily Smith",

"email": "emily@meetingpulse.net",

"signature": ""

}

 

Signature is: secretIdNameEmail

 

 

 

Fr2Df8kQ9v5Sqg3G1234567Emily Smithemily@meetingpulse.net

 

Hash with SHA-256

06ef66a5277d4b1d8c467ea7d1807b1c3695d7c84447152de5d05d9f7f3be15b

 

Put the signature in the Payload.

 

Complete payload:

{

"client": "trial",

"id": "1234567",

"name": "Emily Smith",

"email": "emily@meetingpulse.net",

"signature": "06ef66a5277d4b1d8c467ea7d1807b1c3695d7c84447152de5d05d9f7f3be15b"

}

Convert to link with Base 64:

 

ewogICAgImNsaWVudCI6ICJ0cmlhbCIsCiAgICAiaWQiOiAiMTIzNDU2NyIsCiAgICAibmFtZSI6ICJFbWlseSBTbWl0aCIsCiAgICAiZW1haWwiOiAiZW1pbHlAbWVldGluZ3B1bHNlLm5ldCIsCiAgICAic2lnbmF0dXJlIjogIjA2ZWY2NmE1Mjc3ZDRiMWQ4YzQ2N2VhN2QxODA3YjFjMzY5NWQ3Yzg0NDQ3MTUyZGU1ZDA1ZDlmN2YzYmUxNWIiCn0

 

Add to meeting link after ?i=

https://meet.ps/urltraining?i=

ewogICAgImNsaWVudCI6ICJ0cmlhbCIsCiAgICAiaWQiOiAiMTIzNDU2NyIsCiAgICAibmFtZSI6ICJFbWlseSBTbWl0aCIsCiAgICAiZW1haWwiOiAiZW1pbHlAbWVldGluZ3B1bHNlLm5ldCIsCiAgICAic2lnbmF0dXJlIjogIjA2ZWY2NmE1Mjc3ZDRiMWQ4YzQ2N2VhN2QxODA3YjFjMzY5NWQ3Yzg0NDQ3MTUyZGU1ZDA1ZDlmN2YzYmUxNWIiCn0

 

https://meet.ps/urltraining?i=ewogICAgImNsaWVudCI6ICJ0cmlhbCIsCiAgICAiaWQiOiAiMTIzNDU2NyIsCiAgICAibmFtZSI6ICJFbWlseSBTbWl0aCIsCiAgICAiZW1haWwiOiAiZW1pbHlAbWVldGluZ3B1bHNlLm5ldCIsCiAgICAic2lnbmF0dXJlIjogIjA2ZWY2NmE1Mjc3ZDRiMWQ4YzQ2N2VhN2QxODA3YjFjMzY5NWQ3Yzg0NDQ3MTUyZGU1ZDA1ZDlmN2YzYmUxNWIiCn0

 

Passing Attendee Codes

Have a meeting named, say, url-meeting. Set it to require personal codes, have anonymization disabled, enable the Info slide.

 

Create a CSV file with attendee data, making sure you manually provide the personal code through the "code" column. Say, one of the attendees there has a code of "4242" and has some name you can remember and recognize later.

 

Now, use the google doc file and go through the boring steps. Compose your payload:

 

{

"client": "meetingpulse",

"id": "4242",

"meeting": "url-meeting"

}

 

The secret for the "meetingpulse" client in this example is: 4GvXisPMqyKF3Ve4. Concatenate the secret, attendee code id, and meeting name:

 

4GvXisPMqyKF3Ve44242url-meeting

 

Hash this using SHA256 (use an online tool):

 

22a7890b1dc5c0a2afc02f03080a662dce6680f43455daca8b9dc89ba32bc6ad

 

Put it back into the payload:

 

{

"client": "meetingpulse",

"id": "4242",

"meeting": "url-meeting",

"signature": "22a7890b1dc5c0a2afc02f03080a662dce6680f43455daca8b9dc89ba32bc6ad"

}

 

Base64-encode and URL-escape the above. To do this manually use an online tool to encode the payload (copy-paste the whole block above, including brackets) and manually replace any equal signs (=) with escaped values (%3D):

 

eyANCiJjbGllbnQiOiAibWVldGluZ3B1bHNlIiwgDQoiaWQiOiAiNDI0MiIsIA0KIm1lZXRpbmciOiAiYXV0b2pvaW4td2l0aC1jb2RlcyIsDQoic2lnbmF0dXJlIjogIjIyYTc4OTBiMWRjNWMwYTJhZmMwMmYwMzA4MGE2NjJkY2U2NjgwZjQzNDU1ZGFjYThiOWRjODliYTMyYmM2YWQiDQp9DQo%3D

 

Put that token in the attendee URL by appending an ?i=<token> suffix at the end:

 

https://app.meet.ps/attendee/url-meeting?i=eyANCiJjbGllbnQiOiAibWVldGluZ3B1bHNlIiwgDQoiaWQiOiAiNDI0MiIsIA0KIm1lZXRpbmciOiAiYXV0b2pvaW4td2l0aC1jb2RlcyIsDQoic2lnbmF0dXJlIjogIjIyYTc4OTBiMWRjNWMwYTJhZmMwMmYwMzA4MGE2NjJkY2U2NjgwZjQzNDU1ZGFjYThiOWRjODliYTMyYmM2YWQiDQp9DQo%3D

 

Join the meeting, notice no code was being asked, check the Info/About slide to validate that it shows the invited attendee's name there.