Projects
Freelance client projectUpwork

Sysconnector

Moving Facebook Lead Ads into Adobe Campaign, with mapping and sync status people can check.

As a freelance engineer, I built the lead integration across backend and frontend, plus audience-management and reporting features in the same product.

This case covers my work on an earlier version of the product. Later features and the current marketing website are not my work.

Engagement
Freelance client project via Upwork
My role
Freelance Full-Stack Engineer
Users
Marketing teams connecting lead forms to their campaign tools
Scope
Backend APIs and webhooks; React interfaces
Dates
Aug 2023 – Sep 2024

01

Purpose and users

Sysconnector connects lead sources to marketing destinations. The people using it set up a connection once, then rely on new leads arriving in Adobe Campaign with the right fields, and need to see when one doesn’t.

02

The problem

  • Leads arrive by webhook in each lead form’s own shape; Adobe Campaign expects its own fields.
  • A connection can fail because of credentials, so it should be checked before it is relied on.
  • Operators need to know which leads synced and which didn’t, without reading logs.

03

What I implemented

The screens below are illustrative reconstructions of the interfaces I worked on.

1 · Connection setup

User’s task: connect a lead form to Adobe Campaign and confirm it works.

What I built:

  • Connection validation and credential handling
  • Reuse of existing destination credentials
  • Integration toggles that reflect the saved status
  • Loading states and clearer error messages
Connection setupIllustrative reconstruction
Source
Facebook Lead Ads · [Page] · [Lead form]
Destination
Adobe Campaign
Credentials
Use saved credentials · [Account]
Add new credentials
Validate connectionConnection validated
Example error: Adobe Campaign rejected the client secret. Check it and validate again.
IntegrationOn · saved
Illustrative reconstruction. Names in brackets and the error text are examples.

2 · Field mapping

User’s task: decide where each lead-form field lands in Adobe Campaign.

What I built:

  • Webhook processing for incoming Facebook leads
  • Lead field mapping between the form and Adobe Campaign
Field mappingIllustrative reconstruction
Lead form fieldCampaign fieldStatus
full_name[Campaign field]Mapped
email[Campaign field]Mapped
city[Campaign field]Mapped
phone_numberNot mappedNeeds a field
Illustrative reconstruction. Field names are examples, not captured data.

3 · Lead status and export

User’s task: see which leads reached Adobe Campaign, and export them.

What I built:

  • Sync-status handling per lead
  • CSV lead export with tracking fields
  • Data that refreshes after user actions
LeadsIllustrative reconstruction
Updated after your last actionExport CSV
LeadReceivedSync status
Lead 104209:14Synced
Lead 104309:20Failed · field not mapped
Lead 104409:31Pending
Illustrative reconstruction with fictional leads.

Also in this engagement

Audience management

APIs and React interfaces for managing audiences.

Configurable charts

Creating, editing and previewing charts before saving them.

04

Decisions and tradeoffs

Toggles show what was saved, not what was clicked

Decision
An integration toggle reflects the status stored on the server.
Tradeoff
A brief loading state, in exchange for a toggle that never claims an integration is on when it isn’t.

Reuse destination credentials

Decision
New connections can reuse Adobe Campaign credentials that were already saved. Adobe Campaign didn’t support standard OAuth, and every new set of credentials had to be generated by hand there.
Tradeoff
Sysconnector holds the credentials itself, so it has to store them securely.

05

Outcomes

Delivered

A working lead path from Facebook Lead Ads to Adobe Campaign, with setup, mapping and status screens.

Not claimed

Performance, revenue, adoption or conversion figures.

Need an integration built?

I’m Wilfred Chetat, a senior backend engineer in Dubai. Send a short outline of the systems you need to connect.