HubSpot Implementation Specialist

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Full Time

SALARY

12-20

HOURS PER WEEK

40

DATE UPDATED

May 18, 2026

JOB OVERVIEW

We need a senior, hands-on HubSpot Marketing Ops implementer to turn around our campaign operating model in 4 weeks.

We’ve made some progress on lifecycle/MQL/scoring, but campaigns are not consistently set up, preventing reliable attribution and reporting.

This is an implementation role (build/fix), not advisory. You must be able to execute independently, quickly, and accurately.

What success looks like after 4 weeks
- Campaign owners can launch campaigns using a repeatable checklist (naming, UTMs, asset association, QA)
- HubSpot campaigns have consistent setup and correct asset association (emails, forms, landing pages, ads where applicable)
- Campaign reporting shows contacts + conversions by campaign and can be validated against underlying records
- MQL/lifecycle/scoring logic is aligned to a single source of truth (no conflicting “MQL” definitions)
- Email health basics are in place (suppression, segmentation hygiene, unengaged approach)
- Documentation + training are delivered so the team can maintain standards without constant support

Scope & responsibilities
1) Campaign audit + Campaign checklist
Audit the last 10–15 campaigns and identify where tracking breaks (UTMs, missing assets, dates, naming, conversion points)
Create a Campaign “Definition of Done” checklist including:
- naming convention
- required campaign fields (owner, dates, goal, budget fields if used)
- UTM standard + tracking URL process
- asset association rules (emails/forms/pages/ads)
- QA steps before launch
2) Campaign templates + operating model
- Build reusable templates for key campaign types:
- Webinar/Event
- Content/Download
- Paid/Partner
- Standardise setup so attribution is consistent across campaign types
- Implement lightweight governance to prevent regression (permissions/QA gate/approval step)

3) Attribution + reporting baseline for campaigns
- Ensure conversion points are consistently trackable and attributable:
- form submissions
- meeting booked (where trackable)
- webinar/event registrations and attendance (tool-agnostic)
- Build a campaign dashboard v1 showing:
- contacts associated/influenced by campaign
- conversions by campaign (forms + meetings where possible)
- clear metric definitions and validation notes
4) MQL gate + lifecycle stage alignment (single source of truth)
- Confirm and enforce one source of truth for:
- what counts as MQL
- lifecycle stage movement
- scoring thresholds
- Clean up lifecycle stages and align to Salesforce reality:
- HubSpot owns Lead/MQL logic
- Salesforce owns SQL/outcomes/opportunities/pipeline
5) Lead scoring (Fit + Intent)
Implement/adjust scoring so it reflects Codal ICP and intent:
Fit: title/seniority + industry (company size when available)
Intent: page groups (contact us/work/capabilities/events), conversions, meeting booked, email replies
Ensure scoring does not inflate MQL incorrectly (e.g., “any form submission” without exclusions)
6) Email health + segmentation hygiene
- Audit list health (bounces, unsubscribes, unengaged segment, spam risks)
- Implement:
- suppression lists (internal, customers, competitors, no-consent, hard bounce)
- unengaged/re-engagement approach
- segmentation structure (ICP/persona + intent-based segments)
7) Salesforce alignment (in collaboration with Sales Ops)
- Collaborate with Salesforce owner to ensure:
-SQL/outcomes sync back to HubSpot for visibility (nurture/disqualified/opp)
- mapping rules are documented and consistent
- You won’t own Salesforce architecture, but you must drive clean coordination for reporting.


Deliverables (non-negotiable)
By end of 4 weeks you will deliver:
Campaign Governance Pack (naming, UTMs, asset checklist, QA checklist)
Campaign templates (webinar/event, content, paid/partner)
Campaign audit summary (10–15 campaigns reviewed + fix plan)
Campaign dashboard v1 (contacts + conversions by campaign + metric definitions)
MQL/lifecycle/scoring alignment summary (single source of truth + workflow logic)

Email
hygiene + segmentation improvements (suppression + unengaged approach)
Training + SOPs + Loom walkthrough
Change log / handover pack (what changed, where it lives, how to maintain it)

Required experience
5+ years hands-on HubSpot Marketing Ops / HubSpot implementation
Proven campaign governance delivery (UTMs + templates + enforcement)
Strong data hygiene capability (properties, lists, forms, duplicates approach)
Comfortable building workflows, dashboards, and guardrails
Experience collaborating with Salesforce teams (handoff + reporting constraints)
Execution mindset: you can implement quickly with minimal supervision (not “learning on the job”)

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0163
Total Execution Time  0.0178
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,512,464 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/HubSpot-Implementation-Specialist-1643717
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0105 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0012   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1643717
 LIMIT 1 
0.0010   SELECT *
FROM `employers`
WHERE `employer_id` = 899206
 LIMIT 1 
0.0009   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1643717
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-09-03',ej.date_added) duration_daysDATEDIFF('2026-09-03',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-09-03',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1643717' 
0.0009   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1643717 
0.0015   UPDATE employer_jobs SET hit_counts '***May-11-2026=387***May-12-2026=15***May-13-2026=15***May-14-2026=7***May-15-2026=5***May-16-2026=6***May-17-2026=5***May-18-2026=326***May-19-2026=26***May-20-2026=24***May-21-2026=11***May-22-2026=10***May-23-2026=12***May-24-2026=10***May-25-2026=13***May-26-2026=6***May-27-2026=10***May-28-2026=6***May-29-2026=2***May-30-2026=3***May-31-2026=3***Jun-01-2026=4***Jun-02-2026=1***Jun-03-2026=3***Jun-04-2026=1***Jun-08-2026=1***Jun-09-2026=1***Jun-10-2026=1***Jun-11-2026=2***Jun-12-2026=5***Jun-15-2026=2***Jun-16-2026=1***Jun-18-2026=6***Jun-19-2026=1***Jun-20-2026=3***Jun-23-2026=1***Jun-25-2026=7***Jun-26-2026=4***Jun-27-2026=1***Jun-28-2026=5***Jun-29-2026=1***Jun-30-2026=6***Jul-01-2026=2***Jul-06-2026=1***Jul-07-2026=4***Jul-09-2026=1***Jul-10-2026=2***Jul-11-2026=1***Jul-17-2026=5***Jul-18-2026=1***Jul-20-2026=4***Jul-21-2026=2***Jul-22-2026=1***Jul-23-2026=3***Jul-24-2026=5***Jul-25-2026=7***Jul-27-2026=1***Jul-29-2026=1***Jul-30-2026=1***Jul-31-2026=2***Aug-01-2026=3***Aug-02-2026=2***Aug-03-2026=2***Aug-04-2026=1***Aug-05-2026=2***Aug-06-2026=1***Aug-07-2026=1***Aug-08-2026=1***Aug-13-2026=1***Aug-15-2026=2***Aug-17-2026=2***Aug-21-2026=1***Aug-27-2026=1***Aug-29-2026=1***Sep-03-2026=1' WHERE job_id'1643717'  
0.0008   UPDATE employer_jobs SET monthly_hits '***May-2026=902***Jun-2026=57***Jul-2026=44***Aug-2026=21***Sep-2026=1' WHERE job_id'1643717'  
0.0013   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1643717' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1643717 
0.0010   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '899206'
AND `date_added` >= '2022-06-08' 
0.0004   select from teasers 
0.0003   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)