play icon for videos
← Academy
Strategy · Other

How to map and prioritize stakeholders

Turn the one-time power/interest diagram into a living, prioritized record. Segment stakeholders, tier them with a reason, and give each a persistent Contact ID so the map redraws itself from current data.

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> *{box-sizing:border-box} body{margin:0;font-family:'Hanken Grotesk',-apple-system,BlinkMacSystemFont,sans-serif;background:#F7F4EC;padding:24px;display:flex;justify-content:center} .card{width:620px;max-width:100%;background:#FFFFFF;border:1px solid #EAE3D4;border-radius:20px;box-shadow:0 24px 60px -34px rgba(60,40,20,.34),0 2px 4px rgba(60,40,20,.05);overflow:hidden} .hdr{display:flex;align-items:center;gap:11px;padding:16px 20px;border-bottom:1px solid #EFE9DC;background:#F7F4EC} .hdr .t{min-width:0} .hdr .t .n{font-family:'Newsreader',Georgia,serif;font-weight:600;font-size:16px;color:#2A2115;letter-spacing:-.2px;line-height:1.2} .hdr .t .s{font-size:12px;color:#8A7C63;margin-top:2px} .hdr .pill{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:#C05B3F;background:#F5E4DE;padding:5px 11px;border-radius:20px;white-space:nowrap} .tabs{display:flex;gap:0;padding:12px 12px 0;background:#F7F4EC;flex-wrap:wrap} .tab{flex:1;min-width:88px;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;font-family:inherit;font-size:11px;font-weight:700;color:#8A7C63;background:transparent;border:none;border-bottom:2px solid transparent;padding:8px 4px 10px} .tab.on{font-weight:800;color:#C05B3F;border-bottom-color:#C05B3F} .tab .num{display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center;border-radius:50%;font-size:11px;font-weight:800;color:#8A7C63;background:#EFE9DC} .tab.on .num{color:#fff;background:#C05B3F} .divider{height:1px;background:#EFE9DC} .body{padding:20px} .eyebrow{font-size:10.5px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:#C05B3F;margin-bottom:6px} .headline{font-family:'Newsreader',Georgia,serif;font-size:18px;font-weight:600;line-height:1.28;color:#2A2115;margin-bottom:10px} .lede{font-size:12.5px;line-height:1.55;color:#5C5140;margin:0 0 14px} .promptlbl{font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:#A99C82;margin-bottom:7px} .prompt{position:relative;font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:11px;line-height:1.55;color:#2A2115;background:#F7F4EC;border:1px solid #EFE9DC;border-left:3px solid #C05B3F;border-radius:10px;padding:12px 13px} .promptbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px} .copybtn{font-family:inherit;font-size:11.5px;font-weight:700;color:#2A2115;background:#EFE9DC;border:none;border-radius:8px;padding:7px 13px;cursor:pointer} .copybtn.done{color:#fff;background:#C05B3F} .demo{font-size:11.5px;font-weight:800;color:#C05B3F;text-decoration:none} </style> </head> <body> <div class="card"> <div class="hdr"> <div class="t"> <div class="n">How to map and prioritize stakeholders</div> <div class="s">Actionable in Sopact Sense on one persistent Contact ID</div> </div> <span class="pill">Sopact Sense</span> </div> <div class="tabs" id="tabs"></div> <div class="divider"></div> <div class="body" id="body"></div> </div> <script> (function(){ var TABS = ["Segment","Prioritize","Assign ID","Dedupe","Redraw"]; var CONTENT = [ {eyebrow:"Step 1 · Segment",headline:"Sort stakeholders into the groups you serve and fund.",lede:"Start from your list or program page. Ask the Assistant to segment stakeholders into the groups you serve and the groups you fund, so the map reflects your actual relationships.",prompt:"From this stakeholder list or program page [LIST OR URL], segment our stakeholders into the groups we serve and fund."}, {eyebrow:"Step 2 · Prioritize",headline:"Give each stakeholder a power/interest tier with a one-line reason.",lede:"Assign a priority tier (power/interest or influence/impact) to each stakeholder and require a one-line reason, so the ranking is defensible instead of a gut call.",prompt:"Propose a priority tier for each stakeholder (power/interest) with a one-line reason for each."}, {eyebrow:"Step 3 · Assign a persistent ID",headline:"Give every stakeholder a persistent unique ID at first contact.",lede:"A persistent Contact ID assigned at first contact is what lets the map redraw itself from current data instead of being rebuilt by hand each cycle.",prompt:"Assign every stakeholder a persistent unique ID at first contact so the map redraws itself from current data."}, {eyebrow:"Step 4 · Dedupe",headline:"Flag the same person under different names or emails.",lede:"Duplicates quietly break a map. Have the Assistant flag any stakeholder that appears more than once under a different name or email so you can merge to one record.",prompt:"Flag any stakeholder that appears more than once under different names or emails so we can merge to one record."}, {eyebrow:"Step 5 · Run it as one prompt",headline:"The full map-and-prioritize prompt.",lede:"Run all four steps in one pass. The map is a snapshot; the record it writes to is the asset that keeps updating.",prompt:"From this stakeholder list or program page [LIST OR URL], segment our stakeholders into the groups we serve and fund, propose a priority tier for each with a one-line reason, assign every stakeholder a persistent unique ID, and flag any that appear more than once under different names or emails so we can merge to one record."} ]; var phase = 0; var tabsEl = document.getElementById('tabs'); var bodyEl = document.getElementById('body'); function renderTabs(){ tabsEl.innerHTML=''; TABS.forEach(function(label,i){ var b=document.createElement('button'); b.type='button'; b.className='tab'+(i===phase?' on':''); b.innerHTML='<span class="num">'+(i+1)+'</span><span>'+label+'</span>'; b.addEventListener('click',function(){phase=i;render();}); tabsEl.appendChild(b); }); } function renderBody(){ var c=CONTENT[phase]; var out='<div class="eyebrow">'+c.eyebrow+'</div><div class="headline">'+c.headline+'</div><p class="lede">'+c.lede+'</p>'; out+='<div class="promptlbl">Copy-paste Sopact Assistant prompt</div>'; out+='<div class="prompt" id="promptTxt"></div>'; out+='<div class="promptbar"><button type="button" class="copybtn" id="copyBtn">Copy prompt</button><a class="demo" href="https://www.sopact.com/request-demo" target="_blank" rel="noopener">Request a demo &rarr;</a></div>'; bodyEl.innerHTML=out; document.getElementById('promptTxt').textContent=c.prompt; var btn=document.getElementById('copyBtn'); btn.addEventListener('click',function(){ var t=c.prompt; function done(){btn.textContent='Copied';btn.className='copybtn done';setTimeout(function(){btn.textContent='Copy prompt';btn.className='copybtn';},1600);} if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(t).then(done,function(){fallback(t,done);});} else{fallback(t,done);} }); } function fallback(t,done){ var ta=document.createElement('textarea');ta.value=t;ta.style.position='fixed';ta.style.opacity='0'; document.body.appendChild(ta);ta.select();try{document.execCommand('copy');}catch(e){}document.body.removeChild(ta);done(); } function render(){renderTabs();renderBody();} render(); })(); </script> </body> </html>

In short: Mapping and prioritizing stakeholders in Sopact Sense turns the one-time power/interest diagram into a living record: you segment stakeholders into the groups you serve and fund, assign each a priority tier with a one-line reason, and give every stakeholder a persistent Contact ID at first contact so the map redraws itself from current data instead of being rebuilt by hand. A stale diagram is a snapshot; the record is the asset that keeps updating.

1 · Segment stakeholders into the groups you serve and fund

Start from whatever you already have — a contact list, a spreadsheet, or your program page. In Sopact Sense the Assistant segments those stakeholders into the groups you serve (participants, beneficiaries, community) and the groups you fund or answer to (funders, board, partners, regulators), so the map mirrors your actual relationships rather than a generic template. Point it at the source and let it propose the segments.

From this stakeholder list or program page [LIST OR URL], segment our stakeholders into the groups we serve and fund.

2 · Assign a priority tier with a one-line reason each

A map is only useful if it ranks. Give every stakeholder a power/interest (or influence/impact) tier and require a one-line reason for each, so the ranking is defensible and revisitable — not a gut call you can't reconstruct three months later. High-power, high-interest stakeholders get the most engagement; a low-power, low-interest group gets a lighter cycle.

Propose a priority tier for each stakeholder (power/interest or influence/impact) with a one-line reason for each.

3 · Give every stakeholder a persistent unique ID at first contact

This is the step that makes the map live. In Sopact Sense every stakeholder gets a persistent Contact ID the first time they appear — at first contact, not at enrollment — and every later touch writes back to that ID. That is what lets the map redraw itself from current data: when someone's tier or answers change, the diagram reflects it automatically instead of waiting for a manual rebuild. Assign the ID early or you lose the earliest signal.

Assign every stakeholder a persistent unique ID at first contact so the map redraws itself from current data instead of being rebuilt by hand.

4 · Flag duplicates and merge to one record

The same person often shows up under two emails or a changed name, and every duplicate quietly corrupts the map. Have the Assistant flag any stakeholder that appears more than once so you can merge them to one record and keep the priority tiering honest.

Flag any stakeholder that appears more than once under different names or emails so we can merge to one record.

5 · Run the whole map as one prompt

Once you know the four moves, run them in a single pass. The output is a segmented, tiered, deduplicated map where every stakeholder carries a persistent ID — a record you can rerun next quarter without starting over.

From this stakeholder list or program page [LIST OR URL], segment our stakeholders into the groups we serve and fund, propose a priority tier for each with a one-line reason, assign every stakeholder a persistent unique ID, and flag any that appear more than once under different names or emails so we can merge to one record.

Expected output. A stakeholder table segmented into serve/fund groups; a priority tier (with a one-line reason) per stakeholder; a persistent Contact ID on every row; and a flagged list of likely duplicates to merge. Input: a stakeholder list, spreadsheet, or program-page URL. Output: a segmented, prioritized, deduplicated map bound to persistent IDs that redraws itself as the underlying data changes.

GRADE: green | segment + tier | on persistent IDs; amber | tier | reasons thin or duplicates unmerged; red | rebuild | map rebuilt by hand each cycle

Green is a segmented, tiered map living on persistent Contact IDs. Amber is a map where the tier reasons are thin or duplicates are still unmerged. Red is the old failure mode: a diagram rebuilt from scratch by hand every planning cycle.

Tricks, tips, and troubleshooting

Assign the ID at first contact, not at enrollment. If you wait until someone formally enrolls to give them a persistent ID, you lose every interaction before that — the application, the first inquiry, the intake call. Assign the Contact ID the first time a stakeholder appears so the record is complete from day one.

A map is a snapshot; the record is the asset. The power/interest diagram is a picture of one moment. The value is the underlying record that keeps updating — treat the diagram as a view of the record, not the thing you maintain.

Merge duplicates before you tier. If the same person sits in two rows, their influence is split and the priority ranking is wrong. Run the duplicate flag first, merge to one record, then prioritize.

Improve accuracy by pointing at your own program page. If the segments feel generic, give the Assistant your program page URL or brand guideline so the groups it proposes match your actual language and stakeholder classes.

Frequently asked questions

How do you map and prioritize stakeholders?

You map and prioritize stakeholders by segmenting them into the groups you serve and fund, assigning each a power/interest priority tier with a one-line reason, and giving every stakeholder a persistent Contact ID at first contact. In Sopact Sense the Assistant does all four in one prompt and flags duplicates to merge, so the map redraws itself from current data instead of being rebuilt by hand each cycle.

What is the difference between a stakeholder map and a stakeholder record?

A stakeholder map is a snapshot — a power/interest diagram that is accurate the day you draw it and stale soon after. A stakeholder record is the living asset behind it: every stakeholder on a persistent Contact ID, with each new touch written back, so the map is just a current view of the record. Sopact Sense maintains the record and redraws the map, so you never rebuild the diagram by hand.

When should you assign a stakeholder ID?

Assign the persistent Contact ID at first contact — the first inquiry, application, or intake — not at formal enrollment. Assigning it early means the earliest interactions attach to the record, so the map is complete from the first touch and the same ID carries the stakeholder through multi-year follow-up.

Related from the Academy

Ready to try it for yourself?

Open Sopact Sense, paste your program description, and put it to work.

Try in Sopact