Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to tag a user or company when it joins an Intercom segment

Using Google Apps Script to automatically find users and apply the desired tag — for free.

Between Intercom’s own webhook events and Zapier’s integrated triggers, you can monitor for just about anything in Intercom.

But it’s not currently possible to trigger automation when an entity becomes a member of a segment.

Instead, using a Google Apps Script and a free auth token from Intercom, it’s possible to use Intercom’s API to periodically retrieve any new members of a specific segment and apply a tag, enabling operational automation and enhanced reporting.

Tools

  • Your Intercom account

  • Google Sheets (Google Script)

  • This script

Intercom

Developer Section

Let’s get an auth token. This provides API access to your own Intercom data.

  1. Create an Intercom developer workspace. You should be able to use your existing Intercom account.

  2. Create an app. Name it something simple like “Internal tagging script”. It won’t be distributed anywhere.

  3. Make sure it’s set to use the API version 2.0 or higher (as of 2020–03–02).

  4. Click “Authentication” in the left sidebar, then look at the top of the page and find the section called “Access Token.” Copy the really long string shown there and paste it somewhere for the moment. You’ll use it later.

Business Section

  1. Which segment do you want to monitor? Find it in the UI (people/companies) and click the link to the right to view the users/companies in it.

  2. We’ll only need to retrieve users who don’t yet have the tag we’ll be applying. Add one more filter to the current view: look for anything that doesn’t already have the tag you’ll be applying soon. Then click “Save segment” and save this as a new segment.

  3. View your new segment and note the ID at the end of the URL. Keep that somewhere handy.

Google Sheets

Setup

  1. Create a new Google Sheet

  2. Navigate to Tools → Script editor

  3. Give your code project a name — something simple like “Intercom tagger.”

  4. You are staring at a nearly empty document called “Code.gs.” Highlight the code you see and delete it. Replace it with the code shown here.

  5. Fill in all the details at the top here inside the quotes next to each variable (see example below). You don’t need your auth token quite yet — but you will in the next section. When you’re finished, select File →Save or press the tiny diskette icon in the menubar.

 var target = "companies"; // change to "contacts" if desired
var desiredTag = "New Tag 1";
var segmentId = "5c1d18fddf74c998cb0a9dcd";
var ownerEmail = "you@yourcompany.com";
var sendResultEmails = true;

Run it!

  1. You should see a little playbar at the top next (see image). This is the way to manually run any of the top-level functions in the code. This entire script is wrapped as a function named “intercomTagger,” so go ahead and run it.

  2. Google will probably prompt you to give permission to the script to act on your behalf in a few ways. Say yes.

  3. Now it will appear nothing is happening. That’s because a prompt has opened up in the original Google Sheet, asking you to enter your auth token. Go back to that sheet and enter it!

  4. Come back to the script. If all goes well, it will run for a bit, then stop. If you left that last variable above as sendResultsEmail=true, you’ll have an email in your inbox stating what happened.

Automate it!

Ready to have this run for you all the time?

Apps Scripts can trigger themselves on a schedule, similar to what you might hear developers refer to as a cron job. You can now set up a trigger to run every x minutes/hours all by itself.

  1. Select Edit →Current project’s triggers, or press the tiny clock icon in the menubar.

  2. Press “Add trigger” (bottom right) and select your settings in the modal, then save it. That’s it! Here’s an example:

Known Limitations

If you have a ton of members in the segment, there’s a good chance the first call won’t get all of them. To get around this, just re-run the script manually.

API endpoints tend to split large chunks of data into “pages” of results — like a search results page in Google — and require API clients to page through the data incrementally. This script is not prepared to paginate through the results, so it will only ever handle the first page.

It’s relatively easy to possible to add pagination to the script, but that will also mean adding rate limiting, which is a way of making sure you don’t make too many requests too quickly of an API. Intercom has pretty aggressive rate limiting. All of which is to say, that would make a nice addition to the script if there’s demand for it.

Questions and Requests

Submit an issue or comment on an existing one.

About

Retrieves contacts or companies from a given Intercom segment, then applies a desired tag to them.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to tag a user or company when it joins an Intercom segment

Using Google Apps Script to automatically find users and apply the desired tag — for free.

Between Intercom’s own webhook events and Zapier’s integrated triggers, you can monitor for just about anything in Intercom.

But it’s not currently possible to trigger automation when an entity becomes a member of a segment.

Instead, using a Google Apps Script and a free auth token from Intercom, it’s possible to use Intercom’s API to periodically retrieve any new members of a specific segment and apply a tag, enabling operational automation and enhanced reporting.

Tools

  • Your Intercom account

  • Google Sheets (Google Script)

  • This script

Intercom

Developer Section

Let’s get an auth token. This provides API access to your own Intercom data.

  1. Create an Intercom developer workspace. You should be able to use your existing Intercom account.

  2. Create an app. Name it something simple like “Internal tagging script”. It won’t be distributed anywhere.

  3. Make sure it’s set to use the API version 2.0 or higher (as of 2020–03–02).

  4. Click “Authentication” in the left sidebar, then look at the top of the page and find the section called “Access Token.” Copy the really long string shown there and paste it somewhere for the moment. You’ll use it later.

Business Section

  1. Which segment do you want to monitor? Find it in the UI (people/companies) and click the link to the right to view the users/companies in it.

  2. We’ll only need to retrieve users who don’t yet have the tag we’ll be applying. Add one more filter to the current view: look for anything that doesn’t already have the tag you’ll be applying soon. Then click “Save segment” and save this as a new segment.

  3. View your new segment and note the ID at the end of the URL. Keep that somewhere handy.

Google Sheets

Setup

  1. Create a new Google Sheet

  2. Navigate to Tools → Script editor

  3. Give your code project a name — something simple like “Intercom tagger.”

  4. You are staring at a nearly empty document called “Code.gs.” Highlight the code you see and delete it. Replace it with the code shown here.

  5. Fill in all the details at the top here inside the quotes next to each variable (see example below). You don’t need your auth token quite yet — but you will in the next section. When you’re finished, select File →Save or press the tiny diskette icon in the menubar.

 var target = "companies"; // change to "contacts" if desired
var desiredTag = "New Tag 1";
var segmentId = "5c1d18fddf74c998cb0a9dcd";
var ownerEmail = "you@yourcompany.com";
var sendResultEmails = true;

Run it!

  1. You should see a little playbar at the top next (see image). This is the way to manually run any of the top-level functions in the code. This entire script is wrapped as a function named “intercomTagger,” so go ahead and run it.

  2. Google will probably prompt you to give permission to the script to act on your behalf in a few ways. Say yes.

  3. Now it will appear nothing is happening. That’s because a prompt has opened up in the original Google Sheet, asking you to enter your auth token. Go back to that sheet and enter it!

  4. Come back to the script. If all goes well, it will run for a bit, then stop. If you left that last variable above as sendResultsEmail=true, you’ll have an email in your inbox stating what happened.

Automate it!

Ready to have this run for you all the time?

Apps Scripts can trigger themselves on a schedule, similar to what you might hear developers refer to as a cron job. You can now set up a trigger to run every x minutes/hours all by itself.

  1. Select Edit →Current project’s triggers, or press the tiny clock icon in the menubar.

  2. Press “Add trigger” (bottom right) and select your settings in the modal, then save it. That’s it! Here’s an example:

Known Limitations

If you have a ton of members in the segment, there’s a good chance the first call won’t get all of them. To get around this, just re-run the script manually.

API endpoints tend to split large chunks of data into “pages” of results — like a search results page in Google — and require API clients to page through the data incrementally. This script is not prepared to paginate through the results, so it will only ever handle the first page.

It’s relatively easy to possible to add pagination to the script, but that will also mean adding rate limiting, which is a way of making sure you don’t make too many requests too quickly of an API. Intercom has pretty aggressive rate limiting. All of which is to say, that would make a nice addition to the script if there’s demand for it.

Questions and Requests

Submit an issue or comment on an existing one.

About

Retrieves contacts or companies from a given Intercom segment, then applies a desired tag to them.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to tag a user or company when it joins an Intercom segment

Using Google Apps Script to automatically find users and apply the desired tag — for free.

Between Intercom’s own webhook events and Zapier’s integrated triggers, you can monitor for just about anything in Intercom.

But it’s not currently possible to trigger automation when an entity becomes a member of a segment.

Instead, using a Google Apps Script and a free auth token from Intercom, it’s possible to use Intercom’s API to periodically retrieve any new members of a specific segment and apply a tag, enabling operational automation and enhanced reporting.

Tools

  • Your Intercom account

  • Google Sheets (Google Script)

  • This script

Intercom

Developer Section

Let’s get an auth token. This provides API access to your own Intercom data.

  1. Create an Intercom developer workspace. You should be able to use your existing Intercom account.

  2. Create an app. Name it something simple like “Internal tagging script”. It won’t be distributed anywhere.

  3. Make sure it’s set to use the API version 2.0 or higher (as of 2020–03–02).

  4. Click “Authentication” in the left sidebar, then look at the top of the page and find the section called “Access Token.” Copy the really long string shown there and paste it somewhere for the moment. You’ll use it later.

Business Section

  1. Which segment do you want to monitor? Find it in the UI (people/companies) and click the link to the right to view the users/companies in it.

  2. We’ll only need to retrieve users who don’t yet have the tag we’ll be applying. Add one more filter to the current view: look for anything that doesn’t already have the tag you’ll be applying soon. Then click “Save segment” and save this as a new segment.

  3. View your new segment and note the ID at the end of the URL. Keep that somewhere handy.

Google Sheets

Setup

  1. Create a new Google Sheet

  2. Navigate to Tools → Script editor

  3. Give your code project a name — something simple like “Intercom tagger.”

  4. You are staring at a nearly empty document called “Code.gs.” Highlight the code you see and delete it. Replace it with the code shown here.

  5. Fill in all the details at the top here inside the quotes next to each variable (see example below). You don’t need your auth token quite yet — but you will in the next section. When you’re finished, select File →Save or press the tiny diskette icon in the menubar.

 var target = "companies"; // change to "contacts" if desired
var desiredTag = "New Tag 1";
var segmentId = "5c1d18fddf74c998cb0a9dcd";
var ownerEmail = "you@yourcompany.com";
var sendResultEmails = true;

Run it!

  1. You should see a little playbar at the top next (see image). This is the way to manually run any of the top-level functions in the code. This entire script is wrapped as a function named “intercomTagger,” so go ahead and run it.

  2. Google will probably prompt you to give permission to the script to act on your behalf in a few ways. Say yes.

  3. Now it will appear nothing is happening. That’s because a prompt has opened up in the original Google Sheet, asking you to enter your auth token. Go back to that sheet and enter it!

  4. Come back to the script. If all goes well, it will run for a bit, then stop. If you left that last variable above as sendResultsEmail=true, you’ll have an email in your inbox stating what happened.

Automate it!

Ready to have this run for you all the time?

Apps Scripts can trigger themselves on a schedule, similar to what you might hear developers refer to as a cron job. You can now set up a trigger to run every x minutes/hours all by itself.

  1. Select Edit →Current project’s triggers, or press the tiny clock icon in the menubar.

  2. Press “Add trigger” (bottom right) and select your settings in the modal, then save it. That’s it! Here’s an example:

Known Limitations

If you have a ton of members in the segment, there’s a good chance the first call won’t get all of them. To get around this, just re-run the script manually.

API endpoints tend to split large chunks of data into “pages” of results — like a search results page in Google — and require API clients to page through the data incrementally. This script is not prepared to paginate through the results, so it will only ever handle the first page.

It’s relatively easy to possible to add pagination to the script, but that will also mean adding rate limiting, which is a way of making sure you don’t make too many requests too quickly of an API. Intercom has pretty aggressive rate limiting. All of which is to say, that would make a nice addition to the script if there’s demand for it.

Questions and Requests

Submit an issue or comment on an existing one.

About

Retrieves contacts or companies from a given Intercom segment, then applies a desired tag to them.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to tag a user or company when it joins an Intercom segment

Using Google Apps Script to automatically find users and apply the desired tag — for free.

Between Intercom’s own webhook events and Zapier’s integrated triggers, you can monitor for just about anything in Intercom.

But it’s not currently possible to trigger automation when an entity becomes a member of a segment.

Instead, using a Google Apps Script and a free auth token from Intercom, it’s possible to use Intercom’s API to periodically retrieve any new members of a specific segment and apply a tag, enabling operational automation and enhanced reporting.

Tools

  • Your Intercom account

  • Google Sheets (Google Script)

  • This script

Intercom

Developer Section

Let’s get an auth token. This provides API access to your own Intercom data.

  1. Create an Intercom developer workspace. You should be able to use your existing Intercom account.

  2. Create an app. Name it something simple like “Internal tagging script”. It won’t be distributed anywhere.

  3. Make sure it’s set to use the API version 2.0 or higher (as of 2020–03–02).

  4. Click “Authentication” in the left sidebar, then look at the top of the page and find the section called “Access Token.” Copy the really long string shown there and paste it somewhere for the moment. You’ll use it later.

Business Section

  1. Which segment do you want to monitor? Find it in the UI (people/companies) and click the link to the right to view the users/companies in it.

  2. We’ll only need to retrieve users who don’t yet have the tag we’ll be applying. Add one more filter to the current view: look for anything that doesn’t already have the tag you’ll be applying soon. Then click “Save segment” and save this as a new segment.

  3. View your new segment and note the ID at the end of the URL. Keep that somewhere handy.

Google Sheets

Setup

  1. Create a new Google Sheet

  2. Navigate to Tools → Script editor

  3. Give your code project a name — something simple like “Intercom tagger.”

  4. You are staring at a nearly empty document called “Code.gs.” Highlight the code you see and delete it. Replace it with the code shown here.

  5. Fill in all the details at the top here inside the quotes next to each variable (see example below). You don’t need your auth token quite yet — but you will in the next section. When you’re finished, select File →Save or press the tiny diskette icon in the menubar.

 var target = "companies"; // change to "contacts" if desired
var desiredTag = "New Tag 1";
var segmentId = "5c1d18fddf74c998cb0a9dcd";
var ownerEmail = "you@yourcompany.com";
var sendResultEmails = true;

Run it!

  1. You should see a little playbar at the top next (see image). This is the way to manually run any of the top-level functions in the code. This entire script is wrapped as a function named “intercomTagger,” so go ahead and run it.

  2. Google will probably prompt you to give permission to the script to act on your behalf in a few ways. Say yes.

  3. Now it will appear nothing is happening. That’s because a prompt has opened up in the original Google Sheet, asking you to enter your auth token. Go back to that sheet and enter it!

  4. Come back to the script. If all goes well, it will run for a bit, then stop. If you left that last variable above as sendResultsEmail=true, you’ll have an email in your inbox stating what happened.

Automate it!

Ready to have this run for you all the time?

Apps Scripts can trigger themselves on a schedule, similar to what you might hear developers refer to as a cron job. You can now set up a trigger to run every x minutes/hours all by itself.

  1. Select Edit →Current project’s triggers, or press the tiny clock icon in the menubar.

  2. Press “Add trigger” (bottom right) and select your settings in the modal, then save it. That’s it! Here’s an example:

Known Limitations

If you have a ton of members in the segment, there’s a good chance the first call won’t get all of them. To get around this, just re-run the script manually.

API endpoints tend to split large chunks of data into “pages” of results — like a search results page in Google — and require API clients to page through the data incrementally. This script is not prepared to paginate through the results, so it will only ever handle the first page.

It’s relatively easy to possible to add pagination to the script, but that will also mean adding rate limiting, which is a way of making sure you don’t make too many requests too quickly of an API. Intercom has pretty aggressive rate limiting. All of which is to say, that would make a nice addition to the script if there’s demand for it.

Questions and Requests

Submit an issue or comment on an existing one.

About

Retrieves contacts or companies from a given Intercom segment, then applies a desired tag to them.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to tag a user or company when it joins an Intercom segment

Using Google Apps Script to automatically find users and apply the desired tag — for free.

Between Intercom’s own webhook events and Zapier’s integrated triggers, you can monitor for just about anything in Intercom.

But it’s not currently possible to trigger automation when an entity becomes a member of a segment.

Instead, using a Google Apps Script and a free auth token from Intercom, it’s possible to use Intercom’s API to periodically retrieve any new members of a specific segment and apply a tag, enabling operational automation and enhanced reporting.

Tools

  • Your Intercom account

  • Google Sheets (Google Script)

  • This script

Intercom

Developer Section

Let’s get an auth token. This provides API access to your own Intercom data.

  1. Create an Intercom developer workspace. You should be able to use your existing Intercom account.

  2. Create an app. Name it something simple like “Internal tagging script”. It won’t be distributed anywhere.

  3. Make sure it’s set to use the API version 2.0 or higher (as of 2020–03–02).

  4. Click “Authentication” in the left sidebar, then look at the top of the page and find the section called “Access Token.” Copy the really long string shown there and paste it somewhere for the moment. You’ll use it later.

Business Section

  1. Which segment do you want to monitor? Find it in the UI (people/companies) and click the link to the right to view the users/companies in it.

  2. We’ll only need to retrieve users who don’t yet have the tag we’ll be applying. Add one more filter to the current view: look for anything that doesn’t already have the tag you’ll be applying soon. Then click “Save segment” and save this as a new segment.

  3. View your new segment and note the ID at the end of the URL. Keep that somewhere handy.

Google Sheets

Setup

  1. Create a new Google Sheet

  2. Navigate to Tools → Script editor

  3. Give your code project a name — something simple like “Intercom tagger.”

  4. You are staring at a nearly empty document called “Code.gs.” Highlight the code you see and delete it. Replace it with the code shown here.

  5. Fill in all the details at the top here inside the quotes next to each variable (see example below). You don’t need your auth token quite yet — but you will in the next section. When you’re finished, select File →Save or press the tiny diskette icon in the menubar.

 var target = "companies"; // change to "contacts" if desired
var desiredTag = "New Tag 1";
var segmentId = "5c1d18fddf74c998cb0a9dcd";
var ownerEmail = "you@yourcompany.com";
var sendResultEmails = true;

Run it!

  1. You should see a little playbar at the top next (see image). This is the way to manually run any of the top-level functions in the code. This entire script is wrapped as a function named “intercomTagger,” so go ahead and run it.

  2. Google will probably prompt you to give permission to the script to act on your behalf in a few ways. Say yes.

  3. Now it will appear nothing is happening. That’s because a prompt has opened up in the original Google Sheet, asking you to enter your auth token. Go back to that sheet and enter it!

  4. Come back to the script. If all goes well, it will run for a bit, then stop. If you left that last variable above as sendResultsEmail=true, you’ll have an email in your inbox stating what happened.

Automate it!

Ready to have this run for you all the time?

Apps Scripts can trigger themselves on a schedule, similar to what you might hear developers refer to as a cron job. You can now set up a trigger to run every x minutes/hours all by itself.

  1. Select Edit →Current project’s triggers, or press the tiny clock icon in the menubar.

  2. Press “Add trigger” (bottom right) and select your settings in the modal, then save it. That’s it! Here’s an example:

Known Limitations

If you have a ton of members in the segment, there’s a good chance the first call won’t get all of them. To get around this, just re-run the script manually.

API endpoints tend to split large chunks of data into “pages” of results — like a search results page in Google — and require API clients to page through the data incrementally. This script is not prepared to paginate through the results, so it will only ever handle the first page.

It’s relatively easy to possible to add pagination to the script, but that will also mean adding rate limiting, which is a way of making sure you don’t make too many requests too quickly of an API. Intercom has pretty aggressive rate limiting. All of which is to say, that would make a nice addition to the script if there’s demand for it.

Questions and Requests

Submit an issue or comment on an existing one.

About

Retrieves contacts or companies from a given Intercom segment, then applies a desired tag to them.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to tag a user or company when it joins an Intercom segment

Using Google Apps Script to automatically find users and apply the desired tag — for free.

Between Intercom’s own webhook events and Zapier’s integrated triggers, you can monitor for just about anything in Intercom.

But it’s not currently possible to trigger automation when an entity becomes a member of a segment.

Instead, using a Google Apps Script and a free auth token from Intercom, it’s possible to use Intercom’s API to periodically retrieve any new members of a specific segment and apply a tag, enabling operational automation and enhanced reporting.

Tools

  • Your Intercom account

  • Google Sheets (Google Script)

  • This script

Intercom

Developer Section

Let’s get an auth token. This provides API access to your own Intercom data.

  1. Create an Intercom developer workspace. You should be able to use your existing Intercom account.

  2. Create an app. Name it something simple like “Internal tagging script”. It won’t be distributed anywhere.

  3. Make sure it’s set to use the API version 2.0 or higher (as of 2020–03–02).

  4. Click “Authentication” in the left sidebar, then look at the top of the page and find the section called “Access Token.” Copy the really long string shown there and paste it somewhere for the moment. You’ll use it later.

Business Section

  1. Which segment do you want to monitor? Find it in the UI (people/companies) and click the link to the right to view the users/companies in it.

  2. We’ll only need to retrieve users who don’t yet have the tag we’ll be applying. Add one more filter to the current view: look for anything that doesn’t already have the tag you’ll be applying soon. Then click “Save segment” and save this as a new segment.

  3. View your new segment and note the ID at the end of the URL. Keep that somewhere handy.

Google Sheets

Setup

  1. Create a new Google Sheet

  2. Navigate to Tools → Script editor

  3. Give your code project a name — something simple like “Intercom tagger.”

  4. You are staring at a nearly empty document called “Code.gs.” Highlight the code you see and delete it. Replace it with the code shown here.

  5. Fill in all the details at the top here inside the quotes next to each variable (see example below). You don’t need your auth token quite yet — but you will in the next section. When you’re finished, select File →Save or press the tiny diskette icon in the menubar.

 var target = "companies"; // change to "contacts" if desired
var desiredTag = "New Tag 1";
var segmentId = "5c1d18fddf74c998cb0a9dcd";
var ownerEmail = "you@yourcompany.com";
var sendResultEmails = true;

Run it!

  1. You should see a little playbar at the top next (see image). This is the way to manually run any of the top-level functions in the code. This entire script is wrapped as a function named “intercomTagger,” so go ahead and run it.

  2. Google will probably prompt you to give permission to the script to act on your behalf in a few ways. Say yes.

  3. Now it will appear nothing is happening. That’s because a prompt has opened up in the original Google Sheet, asking you to enter your auth token. Go back to that sheet and enter it!

  4. Come back to the script. If all goes well, it will run for a bit, then stop. If you left that last variable above as sendResultsEmail=true, you’ll have an email in your inbox stating what happened.

Automate it!

Ready to have this run for you all the time?

Apps Scripts can trigger themselves on a schedule, similar to what you might hear developers refer to as a cron job. You can now set up a trigger to run every x minutes/hours all by itself.

  1. Select Edit →Current project’s triggers, or press the tiny clock icon in the menubar.

  2. Press “Add trigger” (bottom right) and select your settings in the modal, then save it. That’s it! Here’s an example:

Known Limitations

If you have a ton of members in the segment, there’s a good chance the first call won’t get all of them. To get around this, just re-run the script manually.

API endpoints tend to split large chunks of data into “pages” of results — like a search results page in Google — and require API clients to page through the data incrementally. This script is not prepared to paginate through the results, so it will only ever handle the first page.

It’s relatively easy to possible to add pagination to the script, but that will also mean adding rate limiting, which is a way of making sure you don’t make too many requests too quickly of an API. Intercom has pretty aggressive rate limiting. All of which is to say, that would make a nice addition to the script if there’s demand for it.

Questions and Requests

Submit an issue or comment on an existing one.

About

Retrieves contacts or companies from a given Intercom segment, then applies a desired tag to them.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to tag a user or company when it joins an Intercom segment

Using Google Apps Script to automatically find users and apply the desired tag — for free.

Between Intercom’s own webhook events and Zapier’s integrated triggers, you can monitor for just about anything in Intercom.

But it’s not currently possible to trigger automation when an entity becomes a member of a segment.

Instead, using a Google Apps Script and a free auth token from Intercom, it’s possible to use Intercom’s API to periodically retrieve any new members of a specific segment and apply a tag, enabling operational automation and enhanced reporting.

Tools

  • Your Intercom account

  • Google Sheets (Google Script)

  • This script

Intercom

Developer Section

Let’s get an auth token. This provides API access to your own Intercom data.

  1. Create an Intercom developer workspace. You should be able to use your existing Intercom account.

  2. Create an app. Name it something simple like “Internal tagging script”. It won’t be distributed anywhere.

  3. Make sure it’s set to use the API version 2.0 or higher (as of 2020–03–02).

  4. Click “Authentication” in the left sidebar, then look at the top of the page and find the section called “Access Token.” Copy the really long string shown there and paste it somewhere for the moment. You’ll use it later.

Business Section

  1. Which segment do you want to monitor? Find it in the UI (people/companies) and click the link to the right to view the users/companies in it.

  2. We’ll only need to retrieve users who don’t yet have the tag we’ll be applying. Add one more filter to the current view: look for anything that doesn’t already have the tag you’ll be applying soon. Then click “Save segment” and save this as a new segment.

  3. View your new segment and note the ID at the end of the URL. Keep that somewhere handy.

Google Sheets

Setup

  1. Create a new Google Sheet

  2. Navigate to Tools → Script editor

  3. Give your code project a name — something simple like “Intercom tagger.”

  4. You are staring at a nearly empty document called “Code.gs.” Highlight the code you see and delete it. Replace it with the code shown here.

  5. Fill in all the details at the top here inside the quotes next to each variable (see example below). You don’t need your auth token quite yet — but you will in the next section. When you’re finished, select File →Save or press the tiny diskette icon in the menubar.

 var target = "companies"; // change to "contacts" if desired
var desiredTag = "New Tag 1";
var segmentId = "5c1d18fddf74c998cb0a9dcd";
var ownerEmail = "you@yourcompany.com";
var sendResultEmails = true;

Run it!

  1. You should see a little playbar at the top next (see image). This is the way to manually run any of the top-level functions in the code. This entire script is wrapped as a function named “intercomTagger,” so go ahead and run it.

  2. Google will probably prompt you to give permission to the script to act on your behalf in a few ways. Say yes.

  3. Now it will appear nothing is happening. That’s because a prompt has opened up in the original Google Sheet, asking you to enter your auth token. Go back to that sheet and enter it!

  4. Come back to the script. If all goes well, it will run for a bit, then stop. If you left that last variable above as sendResultsEmail=true, you’ll have an email in your inbox stating what happened.

Automate it!

Ready to have this run for you all the time?

Apps Scripts can trigger themselves on a schedule, similar to what you might hear developers refer to as a cron job. You can now set up a trigger to run every x minutes/hours all by itself.

  1. Select Edit →Current project’s triggers, or press the tiny clock icon in the menubar.

  2. Press “Add trigger” (bottom right) and select your settings in the modal, then save it. That’s it! Here’s an example:

Known Limitations

If you have a ton of members in the segment, there’s a good chance the first call won’t get all of them. To get around this, just re-run the script manually.

API endpoints tend to split large chunks of data into “pages” of results — like a search results page in Google — and require API clients to page through the data incrementally. This script is not prepared to paginate through the results, so it will only ever handle the first page.

It’s relatively easy to possible to add pagination to the script, but that will also mean adding rate limiting, which is a way of making sure you don’t make too many requests too quickly of an API. Intercom has pretty aggressive rate limiting. All of which is to say, that would make a nice addition to the script if there’s demand for it.

Questions and Requests

Submit an issue or comment on an existing one.

About

Retrieves contacts or companies from a given Intercom segment, then applies a desired tag to them.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to tag a user or company when it joins an Intercom segment

Using Google Apps Script to automatically find users and apply the desired tag — for free.

Between Intercom’s own webhook events and Zapier’s integrated triggers, you can monitor for just about anything in Intercom.

But it’s not currently possible to trigger automation when an entity becomes a member of a segment.

Instead, using a Google Apps Script and a free auth token from Intercom, it’s possible to use Intercom’s API to periodically retrieve any new members of a specific segment and apply a tag, enabling operational automation and enhanced reporting.

Tools

  • Your Intercom account

  • Google Sheets (Google Script)

  • This script

Intercom

Developer Section

Let’s get an auth token. This provides API access to your own Intercom data.

  1. Create an Intercom developer workspace. You should be able to use your existing Intercom account.

  2. Create an app. Name it something simple like “Internal tagging script”. It won’t be distributed anywhere.

  3. Make sure it’s set to use the API version 2.0 or higher (as of 2020–03–02).

  4. Click “Authentication” in the left sidebar, then look at the top of the page and find the section called “Access Token.” Copy the really long string shown there and paste it somewhere for the moment. You’ll use it later.

Business Section

  1. Which segment do you want to monitor? Find it in the UI (people/companies) and click the link to the right to view the users/companies in it.

  2. We’ll only need to retrieve users who don’t yet have the tag we’ll be applying. Add one more filter to the current view: look for anything that doesn’t already have the tag you’ll be applying soon. Then click “Save segment” and save this as a new segment.

  3. View your new segment and note the ID at the end of the URL. Keep that somewhere handy.

Google Sheets

Setup

  1. Create a new Google Sheet

  2. Navigate to Tools → Script editor

  3. Give your code project a name — something simple like “Intercom tagger.”

  4. You are staring at a nearly empty document called “Code.gs.” Highlight the code you see and delete it. Replace it with the code shown here.

  5. Fill in all the details at the top here inside the quotes next to each variable (see example below). You don’t need your auth token quite yet — but you will in the next section. When you’re finished, select File →Save or press the tiny diskette icon in the menubar.

 var target = "companies"; // change to "contacts" if desired
var desiredTag = "New Tag 1";
var segmentId = "5c1d18fddf74c998cb0a9dcd";
var ownerEmail = "you@yourcompany.com";
var sendResultEmails = true;

Run it!

  1. You should see a little playbar at the top next (see image). This is the way to manually run any of the top-level functions in the code. This entire script is wrapped as a function named “intercomTagger,” so go ahead and run it.

  2. Google will probably prompt you to give permission to the script to act on your behalf in a few ways. Say yes.

  3. Now it will appear nothing is happening. That’s because a prompt has opened up in the original Google Sheet, asking you to enter your auth token. Go back to that sheet and enter it!

  4. Come back to the script. If all goes well, it will run for a bit, then stop. If you left that last variable above as sendResultsEmail=true, you’ll have an email in your inbox stating what happened.

Automate it!

Ready to have this run for you all the time?

Apps Scripts can trigger themselves on a schedule, similar to what you might hear developers refer to as a cron job. You can now set up a trigger to run every x minutes/hours all by itself.

  1. Select Edit →Current project’s triggers, or press the tiny clock icon in the menubar.

  2. Press “Add trigger” (bottom right) and select your settings in the modal, then save it. That’s it! Here’s an example:

Known Limitations

If you have a ton of members in the segment, there’s a good chance the first call won’t get all of them. To get around this, just re-run the script manually.

API endpoints tend to split large chunks of data into “pages” of results — like a search results page in Google — and require API clients to page through the data incrementally. This script is not prepared to paginate through the results, so it will only ever handle the first page.

It’s relatively easy to possible to add pagination to the script, but that will also mean adding rate limiting, which is a way of making sure you don’t make too many requests too quickly of an API. Intercom has pretty aggressive rate limiting. All of which is to say, that would make a nice addition to the script if there’s demand for it.

Questions and Requests

Submit an issue or comment on an existing one.

About

Retrieves contacts or companies from a given Intercom segment, then applies a desired tag to them.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages