diff --git a/adapters/zeroclickfraud/usersync.go b/adapters/zeroclickfraud/usersync.go
new file mode 100644
index 00000000000..833524e4b3e
--- /dev/null
+++ b/adapters/zeroclickfraud/usersync.go
@@ -0,0 +1,12 @@
+package zeroclickfraud
+
+import (
+	"text/template"
+
+	"github.com/prebid/prebid-server/adapters"
+	"github.com/prebid/prebid-server/usersync"
+)
+
+func NewZeroClickFraudSyncer(temp *template.Template) usersync.Usersyncer {
+	return adapters.NewSyncer("zeroclickfraud", 0, temp, adapters.SyncTypeIframe)
+}
diff --git a/adapters/zeroclickfraud/usersync_test.go b/adapters/zeroclickfraud/usersync_test.go
new file mode 100644
index 00000000000..30ade771a4c
--- /dev/null
+++ b/adapters/zeroclickfraud/usersync_test.go
@@ -0,0 +1,34 @@
+package zeroclickfraud
+
+import (
+	"testing"
+	"text/template"
+
+	"github.com/prebid/prebid-server/privacy"
+	"github.com/prebid/prebid-server/privacy/ccpa"
+	"github.com/prebid/prebid-server/privacy/gdpr"
+	"github.com/stretchr/testify/assert"
+)
+
+func TestZeroClickFraudSyncer(t *testing.T) {
+	syncURL := "https://s.0cf.io/sync?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&r=https%3A%2F%2Flocalhost%3A8888%2Fsetuid%3Fbidder%3Dzeroclickfraud%26gdpr%3D{{.GDPR}}%26gdpr_consent%3D{{.GDPRConsent}}%26uid%3D%24%7Buid%7D"
+	syncURLTemplate := template.Must(
+		template.New("sync-template").Parse(syncURL),
+	)
+
+	syncer := NewZeroClickFraudSyncer(syncURLTemplate)
+	syncInfo, err := syncer.GetUsersyncInfo(privacy.Policies{
+		GDPR: gdpr.Policy{
+			Signal:  "1",
+			Consent: "BONciguONcjGKADACHENAOLS1rAHDAFAAEAASABQAMwAeACEAFw",
+		},
+		CCPA: ccpa.Policy{
+			Value: "1NYN",
+		},
+	})
+
+	assert.NoError(t, err)
+	assert.Equal(t, "https://s.0cf.io/sync?gdpr=1&gdpr_consent=BONciguONcjGKADACHENAOLS1rAHDAFAAEAASABQAMwAeACEAFw&us_privacy=1NYN&r=https%3A%2F%2Flocalhost%3A8888%2Fsetuid%3Fbidder%3Dzeroclickfraud%26gdpr%3D1%26gdpr_consent%3DBONciguONcjGKADACHENAOLS1rAHDAFAAEAASABQAMwAeACEAFw%26uid%3D%24%7Buid%7D", syncInfo.URL)
+	assert.Equal(t, "iframe", syncInfo.Type)
+	assert.Equal(t, false, syncInfo.SupportCORS)
+}
diff --git a/adapters/zeroclickfraud/zeroclickfraud.go b/adapters/zeroclickfraud/zeroclickfraud.go
new file mode 100644
index 00000000000..963074bf637
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraud.go
@@ -0,0 +1,187 @@
+package zeroclickfraud
+
+import (
+	"encoding/json"
+	"fmt"
+	"github.com/golang/glog"
+	"github.com/mxmCherry/openrtb"
+	"github.com/prebid/prebid-server/adapters"
+	"github.com/prebid/prebid-server/errortypes"
+	"github.com/prebid/prebid-server/macros"
+	"github.com/prebid/prebid-server/openrtb_ext"
+	"net/http"
+	"strconv"
+	"text/template"
+)
+
+type ZeroClickFraudAdapter struct {
+	EndpointTemplate template.Template
+}
+
+func (a *ZeroClickFraudAdapter) MakeRequests(request *openrtb.BidRequest, reqInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) {
+
+	errs := make([]error, 0, len(request.Imp))
+	headers := http.Header{
+		"Content-Type": {"application/json"},
+		"Accept":       {"application/json"},
+	}
+
+	// Pull the host and source ID info from the bidder params.
+	reqImps, err := splitImpressions(request.Imp)
+
+	if err != nil {
+		errs = append(errs, err)
+	}
+
+	requests := []*adapters.RequestData{}
+
+	for reqExt, reqImp := range reqImps {
+		request.Imp = reqImp
+		reqJson, err := json.Marshal(request)
+
+		if err != nil {
+			errs = append(errs, err)
+			continue
+		}
+
+		urlParams := macros.EndpointTemplateParams{Host: reqExt.Host, SourceId: strconv.Itoa(reqExt.SourceId)}
+		url, err := macros.ResolveMacros(a.EndpointTemplate, urlParams)
+
+		if err != nil {
+			errs = append(errs, err)
+			continue
+		}
+
+		request := adapters.RequestData{
+			Method:  "POST",
+			Uri:     url,
+			Body:    reqJson,
+			Headers: headers}
+
+		requests = append(requests, &request)
+	}
+
+	return requests, errs
+}
+
+/*
+internal original request in OpenRTB, external = result of us having converted it (what comes out of MakeRequests)
+*/
+func (a *ZeroClickFraudAdapter) MakeBids(
+	internalRequest *openrtb.BidRequest,
+	externalRequest *adapters.RequestData,
+	response *adapters.ResponseData,
+) (*adapters.BidderResponse, []error) {
+
+	if response.StatusCode == http.StatusNoContent {
+		return nil, nil
+	}
+
+	if response.StatusCode == http.StatusBadRequest {
+		return nil, []error{&errortypes.BadInput{
+			Message: fmt.Sprintf("ERR, bad input %d", response.StatusCode),
+		}}
+	} else if response.StatusCode != http.StatusOK {
+		return nil, []error{&errortypes.BadServerResponse{
+			Message: fmt.Sprintf("ERR, response with status %d", response.StatusCode),
+		}}
+	}
+
+	var bidResp openrtb.BidResponse
+
+	if err := json.Unmarshal(response.Body, &bidResp); err != nil {
+		return nil, []error{err}
+	}
+
+	bidResponse := adapters.NewBidderResponse()
+	bidResponse.Currency = bidResp.Cur
+
+	for _, seatBid := range bidResp.SeatBid {
+		for i := 0; i < len(seatBid.Bid); i++ {
+			bid := seatBid.Bid[i]
+			bidResponse.Bids = append(bidResponse.Bids, &adapters.TypedBid{
+				Bid:     &bid,
+				BidType: getMediaType(bid.ImpID, internalRequest.Imp),
+			})
+		}
+	}
+
+	return bidResponse, nil
+}
+
+func splitImpressions(imps []openrtb.Imp) (map[openrtb_ext.ExtImpZeroClickFraud][]openrtb.Imp, error) {
+
+	var m = make(map[openrtb_ext.ExtImpZeroClickFraud][]openrtb.Imp)
+
+	for _, imp := range imps {
+		bidderParams, err := getBidderParams(&imp)
+		if err != nil {
+			return nil, err
+		}
+
+		m[*bidderParams] = append(m[*bidderParams], imp)
+	}
+
+	return m, nil
+}
+
+func getBidderParams(imp *openrtb.Imp) (*openrtb_ext.ExtImpZeroClickFraud, error) {
+	var bidderExt adapters.ExtImpBidder
+	if err := json.Unmarshal(imp.Ext, &bidderExt); err != nil {
+		return nil, &errortypes.BadInput{
+			Message: fmt.Sprintf("Missing bidder ext: %s", err.Error()),
+		}
+	}
+	var zeroclickfraudExt openrtb_ext.ExtImpZeroClickFraud
+	if err := json.Unmarshal(bidderExt.Bidder, &zeroclickfraudExt); err != nil {
+		return nil, &errortypes.BadInput{
+			Message: fmt.Sprintf("Cannot Resolve host or sourceId: %s", err.Error()),
+		}
+	}
+
+	if zeroclickfraudExt.SourceId < 1 {
+		return nil, &errortypes.BadInput{
+			Message: "Invalid/Missing SourceId",
+		}
+	}
+
+	if len(zeroclickfraudExt.Host) < 1 {
+		return nil, &errortypes.BadInput{
+			Message: "Invalid/Missing Host",
+		}
+	}
+
+	return &zeroclickfraudExt, nil
+}
+
+func getMediaType(impID string, imps []openrtb.Imp) openrtb_ext.BidType {
+
+	bidType := openrtb_ext.BidTypeBanner
+
+	for _, imp := range imps {
+		if imp.ID == impID {
+			if imp.Video != nil {
+				bidType = openrtb_ext.BidTypeVideo
+				break
+			} else if imp.Native != nil {
+				bidType = openrtb_ext.BidTypeNative
+				break
+			} else {
+				bidType = openrtb_ext.BidTypeBanner
+				break
+			}
+		}
+	}
+
+	return bidType
+}
+
+func NewZeroClickFraudBidder(endpoint string) *ZeroClickFraudAdapter {
+	template, err := template.New("endpointTemplate").Parse(endpoint)
+	if err != nil {
+		glog.Fatal("Unable to parse endpoint url template")
+		return nil
+	}
+
+	return &ZeroClickFraudAdapter{EndpointTemplate: *template}
+}
diff --git a/adapters/zeroclickfraud/zeroclickfraud_test.go b/adapters/zeroclickfraud/zeroclickfraud_test.go
new file mode 100644
index 00000000000..ebe41c19d2e
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraud_test.go
@@ -0,0 +1,11 @@
+package zeroclickfraud
+
+import (
+	"testing"
+
+	"github.com/prebid/prebid-server/adapters/adapterstest"
+)
+
+func TestJsonSamples(t *testing.T) {
+	adapterstest.RunJSONBidderTest(t, "zeroclickfraudtest", NewZeroClickFraudBidder("http://{{.Host}}/openrtb2?sid={{.SourceId}}"))
+}
diff --git a/adapters/zeroclickfraud/zeroclickfraudtest/exemplary/multi-request.json b/adapters/zeroclickfraud/zeroclickfraudtest/exemplary/multi-request.json
new file mode 100644
index 00000000000..70bfb9645c8
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraudtest/exemplary/multi-request.json
@@ -0,0 +1,160 @@
+{
+    "mockBidRequest":
+    {
+        "id": "some-request-id",
+        "imp": [
+        {
+            "id": "some-impression-id",
+            "banner":
+            {
+                "format": [
+                {
+                    "w": 300,
+                    "h": 250
+                }]
+            },
+            "ext":
+            {
+                "bidder":
+                {
+                    "host": "q.0cf.io",
+                    "sourceId": 906295
+                }
+            }
+        },{
+            "id": "some-impression-id2",
+            "banner":
+            {
+                "format": [{
+                    "w": 300,
+                    "h": 600
+                }]
+            },
+            "ext":
+            {
+                "bidder":
+                {
+                    "host": "q.0cf.io",
+                    "sourceId": 906295
+                }
+            }
+        }],
+        "site":
+        {
+            "page": "prebid.org"
+        },
+        "device":
+        {
+            "ip": "8.8.8.10"
+        },
+        "at": 1,
+        "tmax": 500
+    },
+    "httpCalls": [
+    {
+        "expectedRequest":
+        {
+            "uri": "http://q.0cf.io/openrtb2?sid=906295",
+            "body":
+            {
+                "id": "some-request-id",
+                "imp": [
+                {
+                    "id": "some-impression-id",
+                    "banner":
+                    {
+                        "format": [
+                        {
+                            "w": 300,
+                            "h": 250
+                        }]
+                    },
+                    "ext":
+                    {
+                        "bidder":
+                        {
+                            "host": "q.0cf.io",
+                            "sourceId": 906295
+                        }
+                    }
+                },{
+                    "id": "some-impression-id2",
+                    "banner":
+                    {
+                        "format": [
+                        {
+                            "w": 300,
+                            "h": 600
+                        }]
+                    },
+                    "ext":
+                    {
+                        "bidder":
+                        {
+                            "host": "q.0cf.io",
+                            "sourceId": 906295
+                        }
+                    }
+                }],
+                "site":
+                {
+                    "page": "prebid.org"
+                },
+                "device":
+                {
+                    "ip": "8.8.8.10"
+                },
+                "at": 1,
+                "tmax": 500
+            }
+        },
+        "mockResponse":
+        {
+            "status": 200,
+            "body":
+            {
+                "id": "some-request-id",
+                "bidid": "183975330-5-29038-2",
+                "seatbid": [
+                {
+                    "seat": "906295",
+                    "bid": [
+                    {
+                        "id": "2181314349",
+                        "impid": "some-impression-id",
+                        "adm": "<style>.text_preview{padding:14px;overflow:hidden;display:flex;flex-direction:column;justify-content:center;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;margin:0;padding:0;color:#333;background:#fff}.text_decription{min-width:150px;padding:5px;flex-grow:0;}.title_preview a{color:#00f;font-weight:700;text-decoration:none}.description_preview{padding:0 0 20px;overflow:hidden;text-overflow:ellipsis}.click_url_preview{color:green}.image_container{position:relative;width:160;height:120}.image_container img{max-height:100%;max-width:100%}.loading{background:url() center no-repeat #eee;height:100%;width:100%;top:0;left:0;position:absolute;border-radius:0}</style><style>.text_boundary {width:300px;height:250px;}</style><div class=\"text_preview text_boundary\"><div class=\"text_decription\"><div class=\"title_preview\"><a href=\"https://t.0cf.io/c/267237/?fcid=2181314349\" target=\"_top\">Datablocks Inc.</a></div><div class=\"description_preview\">Datablocks provides world class \"Software as a Service\" (SaaS) solutions to its clients.</div><a class=\"click_url_preview\" target=\"_top\" href=\"https://t.0cf.io/c/267237/?fcid=2181314349\">www.zeroclickfraud.com</a></div></div><img alt=\"\" src=\"https://t.0cf.io/i/267237/?fcid=2181314349&pixel=1\" width=\"1\" height=\"1\" ></div>",
+                        "price": 13.37,
+                        "cid": "906293",
+                        "adid": "906297",
+                        "crid": "906299",
+                        "w": 300,
+                        "h": 250
+                    }]
+                }],
+                "cur": "USD",
+                "ext":
+                {}
+            }
+        }
+    }],
+    "expectedBidResponses": [
+    {
+        "currency": "USD",
+        "bids": [
+        {
+            "bid":
+            {
+                "id": "2181314349",
+                "impid": "some-impression-id",
+                "adm": "<style>.text_preview{padding:14px;overflow:hidden;display:flex;flex-direction:column;justify-content:center;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;margin:0;padding:0;color:#333;background:#fff}.text_decription{min-width:150px;padding:5px;flex-grow:0;}.title_preview a{color:#00f;font-weight:700;text-decoration:none}.description_preview{padding:0 0 20px;overflow:hidden;text-overflow:ellipsis}.click_url_preview{color:green}.image_container{position:relative;width:160;height:120}.image_container img{max-height:100%;max-width:100%}.loading{background:url() center no-repeat #eee;height:100%;width:100%;top:0;left:0;position:absolute;border-radius:0}</style><style>.text_boundary {width:300px;height:250px;}</style><div class=\"text_preview text_boundary\"><div class=\"text_decription\"><div class=\"title_preview\"><a href=\"https://t.0cf.io/c/267237/?fcid=2181314349\" target=\"_top\">Datablocks Inc.</a></div><div class=\"description_preview\">Datablocks provides world class \"Software as a Service\" (SaaS) solutions to its clients.</div><a class=\"click_url_preview\" target=\"_top\" href=\"https://t.0cf.io/c/267237/?fcid=2181314349\">www.zeroclickfraud.com</a></div></div><img alt=\"\" src=\"https://t.0cf.io/i/267237/?fcid=2181314349&pixel=1\" width=\"1\" height=\"1\" ></div>",
+                "price": 13.37,
+                "cid": "906293",
+                "adid": "906297",
+                "crid": "906299",
+                "w": 300,
+                "h": 250
+            },
+            "type": "banner"
+        }]
+    }]
+}
\ No newline at end of file
diff --git a/adapters/zeroclickfraud/zeroclickfraudtest/exemplary/native.json b/adapters/zeroclickfraud/zeroclickfraudtest/exemplary/native.json
new file mode 100644
index 00000000000..dcf9064f29d
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraudtest/exemplary/native.json
@@ -0,0 +1,123 @@
+{
+    "mockBidRequest":
+    {
+        "id": "some-request-id",
+        "imp": [
+        {
+            "id": "some-impression-id",
+            "native":
+            {
+                "request": "{\"ver\":\"1.1\",\"context\":1,\"contextsubtype\":11,\"plcmttype\":4,\"plcmtcnt\":1,\"assets\":[{\"id\":0,\"required\":1,\"title\":{\"len\":500}},{\"id\":1,\"img\":{\"type\":3,\"wmin\":1,\"hmin\":1}},{\"id\":2,\"data\":{\"type\":1,\"len\":200}},{\"id\":3,\"data\":{\"type\":2,\"len\":15000}},{\"id\":4,\"data\":{\"type\":6,\"len\":40}}]}",
+                "ver": "1.1"
+            },
+            "ext":
+            {
+                "bidder":
+                {
+                    "host": "q.0cf.io",
+                    "sourceId": 906295
+                }
+            }
+        }],
+        "site":
+        {
+            "page": "prebid.org"
+        },
+        "device":
+        {
+            "ip": "8.8.8.10"
+        },
+        "user":
+        {
+            "buyeruid": "4610943261"
+        },
+        "at": 1,
+        "tmax": 500
+    },
+    "httpcalls": [
+    {
+        "expectedRequest":
+        {
+            "uri": "http://q.0cf.io/openrtb2?sid=906295",
+            "body":
+            {
+                "id": "some-request-id",
+                "imp": [
+                {
+                    "id": "some-impression-id",
+                    "native":
+                    {
+                        "request": "{\"ver\":\"1.1\",\"context\":1,\"contextsubtype\":11,\"plcmttype\":4,\"plcmtcnt\":1,\"assets\":[{\"id\":0,\"required\":1,\"title\":{\"len\":500}},{\"id\":1,\"img\":{\"type\":3,\"wmin\":1,\"hmin\":1}},{\"id\":2,\"data\":{\"type\":1,\"len\":200}},{\"id\":3,\"data\":{\"type\":2,\"len\":15000}},{\"id\":4,\"data\":{\"type\":6,\"len\":40}}]}",
+                        "ver": "1.1"
+                    },
+                    "ext":
+                    {
+                        "bidder":
+                        {
+                            "host": "q.0cf.io",
+                            "sourceId": 906295
+                        }
+                    }
+                }],
+                "site":
+                {
+                    "page": "prebid.org"
+                },
+                "device":
+                {
+                    "ip": "8.8.8.10"
+                },
+                "user":
+                {
+                    "buyeruid": "4610943261"
+                },
+                "at": 1,
+                "tmax": 500
+            }
+        },
+        "mockResponse":
+        {
+          "status":200,
+          "body": {
+              "id": "some-request-id",
+              "bidid": "183975330-3-29038-2",
+              "seatbid": [
+              {
+                  "seat": "906295",
+                  "bid": [
+                  {
+                      "id": "2181314346",
+                      "impid": "some-impression-id",
+                      "adm": "{\"native\":{\"ver\":\"1.2\",\"assets\":[{ \"id\":0,\"required\":1,\"title\":{\"text\":\"Datablocks Inc.\"}},{ \"id\":3,\"required\":0,\"data\":{\"value\":\"Datablocks provides world class \\\"Software as a Service\\\" (SaaS) solutions to its clients.\"}}],\"link\":{\"url\":\"https://t.0cf.io/c/267237/?fcid=43154325321\"},\"imptrackers\":[\"https://t.0cf.io/i/267237/?fcid=43154325321&pixel=1\"],\"jstracker\":[]}}",
+                      "price": 13.37,
+                      "cid": "906293",
+                      "adid": "906297",
+                      "crid": "906299",
+                      "ext": {}
+                  }]
+              }],
+              "cur": "USD",
+              "ext": {}
+          }
+       } 
+    }],
+    "expectedBidResponses": [
+    {
+        "currency": "USD",
+        "bids": [
+        {
+          "bid": {
+            "id": "2181314346",
+            "impid": "some-impression-id",
+            "adm": "{\"native\":{\"ver\":\"1.2\",\"assets\":[{ \"id\":0,\"required\":1,\"title\":{\"text\":\"Datablocks Inc.\"}},{ \"id\":3,\"required\":0,\"data\":{\"value\":\"Datablocks provides world class \\\"Software as a Service\\\" (SaaS) solutions to its clients.\"}}],\"link\":{\"url\":\"https://t.0cf.io/c/267237/?fcid=43154325321\"},\"imptrackers\":[\"https://t.0cf.io/i/267237/?fcid=43154325321&pixel=1\"],\"jstracker\":[]}}",
+            "price": 13.37,
+            "cid": "906293",
+            "adid": "906297",
+            "crid": "906299",
+            "ext": {}
+          },
+          "type":"native"
+        }
+      ]
+    }]
+}
\ No newline at end of file
diff --git a/adapters/zeroclickfraud/zeroclickfraudtest/exemplary/simple-banner.json b/adapters/zeroclickfraud/zeroclickfraudtest/exemplary/simple-banner.json
new file mode 100644
index 00000000000..1d5ee3b3a52
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraudtest/exemplary/simple-banner.json
@@ -0,0 +1,133 @@
+{
+    "mockBidRequest":
+    {
+        "id": "some-request-id",
+        "imp": [
+        {
+            "id": "some-impression-id",
+            "banner":
+            {
+                "format": [
+                {
+                    "w": 300,
+                    "h": 250
+                },
+                {
+                    "w": 300,
+                    "h": 600
+                }]
+            },
+            "ext":
+            {
+                "bidder":
+                {
+                    "host": "q.0cf.io",
+                    "sourceId": 906295
+                }
+            }
+        }],
+        "site":
+        {
+            "page": "prebid.org"
+        },
+        "device":
+        {
+            "ip": "8.8.8.10"
+        },
+        "at": 1,
+        "tmax": 500
+    },
+    "httpCalls": [
+    {
+        "expectedRequest":
+        {
+            "uri": "http://q.0cf.io/openrtb2?sid=906295",
+            "body":
+            {
+                "id": "some-request-id",
+                "imp": [
+                {
+                    "id": "some-impression-id",
+                    "banner":
+                    {
+                        "format": [
+                        {
+                            "w": 300,
+                            "h": 250
+                        },
+                        {
+                            "w": 300,
+                            "h": 600
+                        }]
+                    },
+                    "ext":
+                    {
+                        "bidder":
+                        {
+                            "host": "q.0cf.io",
+                            "sourceId": 906295
+                        }
+                    }
+                }],
+                "site":
+                {
+                    "page": "prebid.org"
+                },
+                "device":
+                {
+                    "ip": "8.8.8.10"
+                },
+                "at": 1,
+                "tmax": 500
+            }
+        },
+        "mockResponse":
+        {
+            "status": 200,
+            "body":
+            {
+                "id": "some-request-id",
+                "bidid": "183975330-5-29038-2",
+                "seatbid": [
+                {
+                    "seat": "906295",
+                    "bid": [
+                    {
+                        "id": "2181314349",
+                        "impid": "some-impression-id",
+                        "adm": "<style>.text_preview{padding:14px;overflow:hidden;display:flex;flex-direction:column;justify-content:center;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;margin:0;padding:0;color:#333;background:#fff}.text_decription{min-width:150px;padding:5px;flex-grow:0;}.title_preview a{color:#00f;font-weight:700;text-decoration:none}.description_preview{padding:0 0 20px;overflow:hidden;text-overflow:ellipsis}.click_url_preview{color:green}.image_container{position:relative;width:160;height:120}.image_container img{max-height:100%;max-width:100%}.loading{background:url() center no-repeat #eee;height:100%;width:100%;top:0;left:0;position:absolute;border-radius:0}</style><style>.text_boundary {width:300px;height:250px;}</style><div class=\"text_preview text_boundary\"><div class=\"text_decription\"><div class=\"title_preview\"><a href=\"https://t.0cf.io/c/267237/?fcid=2181314349\" target=\"_top\">Datablocks Inc.</a></div><div class=\"description_preview\">Datablocks provides world class \"Software as a Service\" (SaaS) solutions to its clients.</div><a class=\"click_url_preview\" target=\"_top\" href=\"https://t.0cf.io/c/267237/?fcid=2181314349\">www.zeroclickfraud.com.net</a></div></div><img alt=\"\" src=\"https://t.0cf.io/i/267237/?fcid=2181314349&pixel=1\" width=\"1\" height=\"1\" ></div>",
+                        "price": 13.37,
+                        "cid": "906293",
+                        "adid": "906297",
+                        "crid": "906299",
+                        "w": 300,
+                        "h": 250
+                    }]
+                }],
+                "cur": "USD",
+                "ext":
+                {}
+            }
+        }
+    }],
+    "expectedBidResponses": [
+    {
+        "currency": "USD",
+        "bids": [
+        {
+            "bid":
+            {
+                "id": "2181314349",
+                "impid": "some-impression-id",
+                "adm": "<style>.text_preview{padding:14px;overflow:hidden;display:flex;flex-direction:column;justify-content:center;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;margin:0;padding:0;color:#333;background:#fff}.text_decription{min-width:150px;padding:5px;flex-grow:0;}.title_preview a{color:#00f;font-weight:700;text-decoration:none}.description_preview{padding:0 0 20px;overflow:hidden;text-overflow:ellipsis}.click_url_preview{color:green}.image_container{position:relative;width:160;height:120}.image_container img{max-height:100%;max-width:100%}.loading{background:url() center no-repeat #eee;height:100%;width:100%;top:0;left:0;position:absolute;border-radius:0}</style><style>.text_boundary {width:300px;height:250px;}</style><div class=\"text_preview text_boundary\"><div class=\"text_decription\"><div class=\"title_preview\"><a href=\"https://t.0cf.io/c/267237/?fcid=2181314349\" target=\"_top\">Datablocks Inc.</a></div><div class=\"description_preview\">Datablocks provides world class \"Software as a Service\" (SaaS) solutions to its clients.</div><a class=\"click_url_preview\" target=\"_top\" href=\"https://t.0cf.io/c/267237/?fcid=2181314349\">www.zeroclickfraud.com.net</a></div></div><img alt=\"\" src=\"https://t.0cf.io/i/267237/?fcid=2181314349&pixel=1\" width=\"1\" height=\"1\" ></div>",
+                "price": 13.37,
+                "cid": "906293",
+                "adid": "906297",
+                "crid": "906299",
+                "w": 300,
+                "h": 250
+            },
+            "type": "banner"
+        }]
+    }]
+}
\ No newline at end of file
diff --git a/adapters/zeroclickfraud/zeroclickfraudtest/exemplary/simple-video.json b/adapters/zeroclickfraud/zeroclickfraudtest/exemplary/simple-video.json
new file mode 100644
index 00000000000..949e74602dd
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraudtest/exemplary/simple-video.json
@@ -0,0 +1,138 @@
+{
+    "mockBidRequest":
+    {
+        "id": "some-request-id",
+        "imp": [
+        {
+            "id": "some-impression-id",
+            "video":
+            {
+                "mimes":[
+                  "video/x-flv"
+                ],
+                "w": 500,
+                "h": 400,
+                "minduration": 30
+            },
+            "ext":
+            {
+                "bidder":
+                {
+                    "host": "q.0cf.io",
+                    "sourceId": 906295
+                }
+            }
+        }],
+        "site":
+        {
+            "page": "prebid.org"
+        },
+        "device":
+        {
+            "ip": "8.8.8.10"
+        },
+        "at": 1,
+        "tmax": 500
+    },
+
+    "httpCalls": [
+    {
+        "expectedRequest":
+        {
+            "uri": "http://q.0cf.io/openrtb2?sid=906295",
+            "body":
+            {
+                "id": "some-request-id",
+                "imp": [
+                {
+                    "id": "some-impression-id",
+                    "video":
+                    {
+                        "mimes":[
+                          "video/x-flv"
+                        ],
+                        "w": 500,
+                        "h": 400,
+                        "minduration": 30
+                    },
+                    "ext":
+                    {
+                        "bidder":
+                        {
+                            "host": "q.0cf.io",
+                            "sourceId": 906295
+                        }
+                    }
+                }],
+                "site":
+                {
+                    "page": "prebid.org"
+                },
+                "device":
+                {
+                    "ip": "8.8.8.10"
+                },
+                "at": 1,
+                "tmax": 500
+            }
+        },
+        "mockResponse":
+        {
+            "status": 200,
+            "body":
+            {
+                "id": "some-request-id",
+                "bidid": "183975330-4-29038-2",
+                "seatbid": [
+                {
+                    "seat": "906295",
+                    "bid": [
+                    {
+                        "id": "2181314347",
+                        "impid": "some-impression-id",
+                        "nurl": "https://t.0cf.io/wm/267237/?fcid=2181314347",
+                        "price": 13.37,
+                        "cid": "906293",
+                        "adid": "906297",
+                        "crid": "906729",
+                        "w": 500,
+                        "h": 400,
+                        "ext":
+                        {
+                            "type": "CPM"
+                        }
+                    }]
+                }],
+                "cur": "USD",
+                "ext":
+                {}
+            }
+        }
+    }],
+
+
+    "expectedBidResponses": [
+    {
+        "currency": "USD",
+        "bids": [
+        {
+            "bid":
+            {
+                "id": "2181314347",
+                "impid": "some-impression-id",
+                "price": 13.37,
+                "nurl": "https://t.0cf.io/wm/267237/?fcid=2181314347",
+                "adid": "906297",
+                "cid": "906293",
+                "crid": "906729",
+                "w": 500,
+                "h": 400,
+                "ext":
+                {
+                    "type": "CPM"
+                }
+            },
+            "type": "video"
+        }]
+    }]
+}
\ No newline at end of file
diff --git a/adapters/zeroclickfraud/zeroclickfraudtest/params/race/banner.json b/adapters/zeroclickfraud/zeroclickfraudtest/params/race/banner.json
new file mode 100644
index 00000000000..cff0af83143
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraudtest/params/race/banner.json
@@ -0,0 +1,4 @@
+{
+    "sourceId": 906295,
+    "host": "q.0cf.io"
+}
\ No newline at end of file
diff --git a/adapters/zeroclickfraud/zeroclickfraudtest/params/race/native.json b/adapters/zeroclickfraud/zeroclickfraudtest/params/race/native.json
new file mode 100644
index 00000000000..cff0af83143
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraudtest/params/race/native.json
@@ -0,0 +1,4 @@
+{
+    "sourceId": 906295,
+    "host": "q.0cf.io"
+}
\ No newline at end of file
diff --git a/adapters/zeroclickfraud/zeroclickfraudtest/params/race/video.json b/adapters/zeroclickfraud/zeroclickfraudtest/params/race/video.json
new file mode 100644
index 00000000000..cff0af83143
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraudtest/params/race/video.json
@@ -0,0 +1,4 @@
+{
+    "sourceId": 906295,
+    "host": "q.0cf.io"
+}
\ No newline at end of file
diff --git a/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/bad-host.json b/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/bad-host.json
new file mode 100644
index 00000000000..cee5efbe760
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/bad-host.json
@@ -0,0 +1,33 @@
+{
+  "mockBidRequest": {
+    "id": "bad-host-test",
+    "imp": [
+      {
+        "id": "bad-host-test-imp",
+        "banner": {
+          "format": [
+            {
+              "w": 300,
+              "h": 250
+            }
+          ]
+        },
+        "ext": 
+        {
+          "bidder":
+          {
+              "host": "",
+              "sourceId": 123
+          }
+        }
+      }
+    ]
+  },
+
+  "expectedMakeRequestsErrors": [
+    {
+      "value": "Invalid/Missing Host",
+      "comparison": "literal"
+    } 
+  ]
+}
diff --git a/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/bad-response-body.json b/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/bad-response-body.json
new file mode 100644
index 00000000000..84d6bd9d889
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/bad-response-body.json
@@ -0,0 +1,88 @@
+{
+    "mockBidRequest":
+    {
+        "id": "some-request-id",
+        "imp": [
+        {
+            "id": "some-impression-id",
+            "banner":
+            {
+                "format": [
+                {
+                    "w": 300,
+                    "h": 250
+                }]
+            },
+            "ext":
+            {
+                "bidder":
+                {
+                    "host": "q.0cf.io",
+                    "sourceId": 123
+                }
+            }
+        }],
+        "site":
+        {
+            "page": "prebid.org"
+        },
+        "device":
+        {
+            "ip": "8.8.8.10"
+        },
+        "at": 1,
+        "tmax": 500
+    },
+    "httpCalls": [
+    {
+        "expectedRequest":
+        {
+            "uri": "http://q.0cf.io/openrtb2?sid=123",
+            "body":
+            {
+                "id": "some-request-id",
+                "imp": [
+                {
+                    "id": "some-impression-id",
+                    "banner":
+                    {
+                        "format": [
+                        {
+                            "w": 300,
+                            "h": 250
+                        }]
+                    },
+                    "ext":
+                    {
+                        "bidder":
+                        {
+                            "host": "q.0cf.io",
+                            "sourceId": 123
+                        }
+                    }
+                }],
+                "site":
+                {
+                    "page": "prebid.org"
+                },
+                "device":
+                {
+                    "ip": "8.8.8.10"
+                },
+                "at": 1,
+                "tmax": 500
+            }
+        },
+        "mockResponse":
+        {
+            "status": 200,
+            "body":"foobar"
+        }
+    }],
+    "expectedMakeBidsErrors": [
+      {
+        "value": "json: cannot unmarshal string into Go value of type openrtb.BidResponse",
+        "comparison": "literal"  
+      }
+    ]
+}
\ No newline at end of file
diff --git a/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/bad-server-response.json b/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/bad-server-response.json
new file mode 100644
index 00000000000..fdea4f109a7
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/bad-server-response.json
@@ -0,0 +1,88 @@
+{
+    "mockBidRequest":
+    {
+        "id": "some-request-id",
+        "imp": [
+        {
+            "id": "some-impression-id",
+            "banner":
+            {
+                "format": [
+                {
+                    "w": 300,
+                    "h": 250
+                }]
+            },
+            "ext":
+            {
+                "bidder":
+                {
+                    "host": "q.0cf.io",
+                    "sourceId": 123
+                }
+            }
+        }],
+        "site":
+        {
+            "page": "prebid.org"
+        },
+        "device":
+        {
+            "ip": "8.8.8.10"
+        },
+        "at": 1,
+        "tmax": 500
+    },
+    "httpCalls": [
+    {
+        "expectedRequest":
+        {
+            "uri": "http://q.0cf.io/openrtb2?sid=123",
+            "body":
+            {
+                "id": "some-request-id",
+                "imp": [
+                {
+                    "id": "some-impression-id",
+                    "banner":
+                    {
+                        "format": [
+                        {
+                            "w": 300,
+                            "h": 250
+                        }]
+                    },
+                    "ext":
+                    {
+                        "bidder":
+                        {
+                            "host": "q.0cf.io",
+                            "sourceId": 123
+                        }
+                    }
+                }],
+                "site":
+                {
+                    "page": "prebid.org"
+                },
+                "device":
+                {
+                    "ip": "8.8.8.10"
+                },
+                "at": 1,
+                "tmax": 500
+            }
+        },
+        "mockResponse":
+        {
+            "status": 500,
+            "body": {}
+        }
+    }],
+    "expectedMakeBidsErrors": [
+      {
+        "value": "ERR, response with status 500",
+        "comparison": "literal"  
+      }
+    ]
+}
\ No newline at end of file
diff --git a/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/bad-sourceId.json b/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/bad-sourceId.json
new file mode 100644
index 00000000000..4d86c32cd58
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/bad-sourceId.json
@@ -0,0 +1,35 @@
+{
+  "mockBidRequest": {
+    "id": "bad-sourceId-test",
+    "imp": [
+      {
+        "id": "bad-sourceId-test-imp",
+        "banner": {
+          "format": [
+            {
+              "w": 300,
+              "h": 250
+            }
+          ]
+        },
+        "ext": 
+        {
+          "bidder":
+          {
+              "host": "q.0cf.io",
+              "sourceId": 0
+          }
+        }
+      }
+    ]
+  },
+
+  "expectedMakeRequestsErrors": [
+    {
+      "value": "Invalid/Missing SourceId",
+      "comparison": "literal"
+    } 
+  ]
+
+  
+}
diff --git a/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/missing-ext.json b/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/missing-ext.json
new file mode 100644
index 00000000000..68d29e880b9
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/missing-ext.json
@@ -0,0 +1,27 @@
+{
+  "mockBidRequest": {
+    "id": "missing-extbid-test",
+    "imp": [
+      {
+        "id": "missing-extbid-test",
+        "banner": {
+          "format": [
+            {
+              "w": 300,
+              "h": 250
+            }
+          ]
+        }
+      }
+    ]
+  },
+
+  "expectedMakeRequestsErrors": [
+    {
+      "value": "Missing bidder ext: unexpected end of JSON input",
+      "comparison": "literal"
+    } 
+  ]
+
+  
+}
diff --git a/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/missing-extparam.json b/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/missing-extparam.json
new file mode 100644
index 00000000000..d272cd5347c
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/missing-extparam.json
@@ -0,0 +1,30 @@
+{
+  "mockBidRequest": {
+    "id": "missing-extbid-test",
+    "imp": [
+      {
+        "id": "missing-extbid-test",
+        "banner": {
+          "format": [
+            {
+              "w": 300,
+              "h": 250
+            }
+          ]
+        },
+        "ext": {
+          "sourceId":54326
+        }
+      }
+    ]
+  },
+
+  "expectedMakeRequestsErrors": [
+    {
+      "value": "Cannot Resolve host or sourceId: unexpected end of JSON input",
+      "comparison": "literal"
+    } 
+  ]
+
+  
+}
diff --git a/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/no-content-response.json b/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/no-content-response.json
new file mode 100644
index 00000000000..3a36d6e04b2
--- /dev/null
+++ b/adapters/zeroclickfraud/zeroclickfraudtest/supplemental/no-content-response.json
@@ -0,0 +1,82 @@
+{
+    "mockBidRequest":
+    {
+        "id": "some-request-id",
+        "imp": [
+        {
+            "id": "some-impression-id",
+            "banner":
+            {
+                "format": [
+                {
+                    "w": 300,
+                    "h": 250
+                }]
+            },
+            "ext":
+            {
+                "bidder":
+                {
+                    "host": "q.0cf.io",
+                    "sourceId": 123
+                }
+            }
+        }],
+        "site":
+        {
+            "page": "prebid.org"
+        },
+        "device":
+        {
+            "ip": "8.8.8.10"
+        },
+        "at": 1,
+        "tmax": 500
+    },
+    "httpCalls": [
+    {
+        "expectedRequest":
+        {
+            "uri": "http://q.0cf.io/openrtb2?sid=123",
+            "body":
+            {
+                "id": "some-request-id",
+                "imp": [
+                {
+                    "id": "some-impression-id",
+                    "banner":
+                    {
+                        "format": [
+                        {
+                            "w": 300,
+                            "h": 250
+                        }]
+                    },
+                    "ext":
+                    {
+                        "bidder":
+                        {
+                            "host": "q.0cf.io",
+                            "sourceId": 123
+                        }
+                    }
+                }],
+                "site":
+                {
+                    "page": "prebid.org"
+                },
+                "device":
+                {
+                    "ip": "8.8.8.10"
+                },
+                "at": 1,
+                "tmax": 500
+            }
+        },
+        "mockResponse":
+        {
+            "status": 204
+        }
+    }],
+    "expectedBidResponses": []
+}
\ No newline at end of file
diff --git a/config/config.go b/config/config.go
index b9501cf6355..953854bf8de 100644
--- a/config/config.go
+++ b/config/config.go
@@ -534,6 +534,7 @@ func (cfg *Configuration) setDerivedDefaults() {
 	setDefaultUsersync(cfg.Adapters, openrtb_ext.BidderVisx, "https://t.visx.net/s2s_sync?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&redir="+url.QueryEscape(externalURL)+"%2Fsetuid%3Fbidder%3Dvisx%26gdpr%3D{{.GDPR}}%26gdpr_consent%3D{{.GDPRConsent}}%26uid%3D%24%7BUUID%7D")
 	// openrtb_ext.BidderVrtcal doesn't have a good default.
 	setDefaultUsersync(cfg.Adapters, openrtb_ext.BidderYieldmo, "https://ads.yieldmo.com/pbsync?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&redirectUri="+url.QueryEscape(externalURL)+"%2Fsetuid%3Fbidder%3Dyieldmo%26gdpr%3D{{.GDPR}}%26gdpr_consent%3D{{.GDPRConsent}}%26uid%3D%24UID")
+	setDefaultUsersync(cfg.Adapters, openrtb_ext.BidderZeroClickFraud, "https://s.0cf.io/sync?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&r="+url.QueryEscape(externalURL)+"%2Fsetuid%3Fbidder%3Dzeroclickfraud%26gdpr%3D{{.GDPR}}%26gdpr_consent%3D{{.GDPRConsent}}%26uid%3D%24%7Buid%7D")
 }
 
 func setDefaultUsersync(m map[string]Adapter, bidder openrtb_ext.BidderName, defaultValue string) {
@@ -726,6 +727,7 @@ func SetupViper(v *viper.Viper, filename string) {
 	v.SetDefault("adapters.visx.endpoint", "https://t.visx.net/s2s_bid?wrapperType=s2s_prebid_standard")
 	v.SetDefault("adapters.vrtcal.endpoint", "http://rtb.vrtcal.com/bidder_prebid.vap?ssp=1804")
 	v.SetDefault("adapters.yieldmo.endpoint", "https://ads.yieldmo.com/exchange/prebid-server")
+	v.SetDefault("adapters.zeroclickfraud.endpoint", "http://{{.Host}}/openrtb2?sid={{.SourceId}}")
 
 	v.SetDefault("max_request_size", 1024*256)
 	v.SetDefault("analytics.file.filename", "")
diff --git a/exchange/adapter_map.go b/exchange/adapter_map.go
index f0ff9c5b1a7..0354f258158 100644
--- a/exchange/adapter_map.go
+++ b/exchange/adapter_map.go
@@ -61,6 +61,7 @@ import (
 	"github.com/prebid/prebid-server/adapters/visx"
 	"github.com/prebid/prebid-server/adapters/vrtcal"
 	"github.com/prebid/prebid-server/adapters/yieldmo"
+	"github.com/prebid/prebid-server/adapters/zeroclickfraud"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
 )
@@ -130,6 +131,7 @@ func newAdapterMap(client *http.Client, cfg *config.Configuration, infos adapter
 		openrtb_ext.BidderVisx:             visx.NewVisxBidder(cfg.Adapters[string(openrtb_ext.BidderVisx)].Endpoint),
 		openrtb_ext.BidderVrtcal:           vrtcal.NewVrtcalBidder(cfg.Adapters[string(openrtb_ext.BidderVrtcal)].Endpoint),
 		openrtb_ext.BidderYieldmo:          yieldmo.NewYieldmoBidder(cfg.Adapters[string(openrtb_ext.BidderYieldmo)].Endpoint),
+		openrtb_ext.BidderZeroClickFraud:   zeroclickfraud.NewZeroClickFraudBidder(cfg.Adapters[string(openrtb_ext.BidderZeroClickFraud)].Endpoint),
 	}
 
 	legacyBidders := map[openrtb_ext.BidderName]adapters.Adapter{
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index d1490603b50..ed3d20e06ab 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -74,6 +74,7 @@ const (
 	BidderVisx             BidderName = "visx"
 	BidderVrtcal           BidderName = "vrtcal"
 	BidderYieldmo          BidderName = "yieldmo"
+	BidderZeroClickFraud   BidderName = "zeroclickfraud"
 )
 
 // BidderMap stores all the valid OpenRTB 2.x Bidders in the project. This map *must not* be mutated.
@@ -132,6 +133,7 @@ var BidderMap = map[string]BidderName{
 	"visx":              BidderVisx,
 	"vrtcal":            BidderVrtcal,
 	"yieldmo":           BidderYieldmo,
+	"zeroclickfraud":    BidderZeroClickFraud,
 }
 
 // BidderList returns the values of the BidderMap
diff --git a/openrtb_ext/imp_zeroclickfraud.go b/openrtb_ext/imp_zeroclickfraud.go
new file mode 100644
index 00000000000..ae82fcacd9a
--- /dev/null
+++ b/openrtb_ext/imp_zeroclickfraud.go
@@ -0,0 +1,7 @@
+package openrtb_ext
+
+// ExtImpZeroClickFraud defines the contract for bidrequest.imp[i].ext.datablocks
+type ExtImpZeroClickFraud struct {
+	SourceId int    `json:"sourceId"`
+	Host     string `json:"host"`
+}
diff --git a/static/bidder-info/zeroclickfraud.yaml b/static/bidder-info/zeroclickfraud.yaml
new file mode 100644
index 00000000000..9bf7e780914
--- /dev/null
+++ b/static/bidder-info/zeroclickfraud.yaml
@@ -0,0 +1,13 @@
+maintainer:
+  email: "henry@datablocks.net"
+capabilities:
+  app:
+    mediaTypes:
+      - banner
+      - native
+      - video
+  site:
+    mediaTypes:
+      - banner
+      - native
+      - video
diff --git a/static/bidder-params/zeroclickfraud.json b/static/bidder-params/zeroclickfraud.json
new file mode 100644
index 00000000000..1c5e3c633b4
--- /dev/null
+++ b/static/bidder-params/zeroclickfraud.json
@@ -0,0 +1,19 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "title": "ZeroClickFraud Adapter Params",
+  "description": "A schema which validates params accepted by the ZeroClickFraud adapter",
+
+  "type": "object",
+  "properties": {
+      "sourceId": {
+        "type": "integer",
+        "minimum": 1,
+        "description": "Website Source Id"
+      },
+      "host": {
+        "type": "string",
+        "description": "Network Host to request from"
+      }
+  },
+  "required": ["host", "sourceId"]
+}
diff --git a/usersync/usersyncers/syncer.go b/usersync/usersyncers/syncer.go
index eb25171854a..c58d552844d 100644
--- a/usersync/usersyncers/syncer.go
+++ b/usersync/usersyncers/syncer.go
@@ -54,6 +54,7 @@ import (
 	"github.com/prebid/prebid-server/adapters/visx"
 	"github.com/prebid/prebid-server/adapters/vrtcal"
 	"github.com/prebid/prebid-server/adapters/yieldmo"
+	"github.com/prebid/prebid-server/adapters/zeroclickfraud"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
 	"github.com/prebid/prebid-server/usersync"
@@ -114,6 +115,7 @@ func NewSyncerMap(cfg *config.Configuration) map[openrtb_ext.BidderName]usersync
 	insertIntoMap(cfg, syncers, openrtb_ext.BidderVisx, visx.NewVisxSyncer)
 	insertIntoMap(cfg, syncers, openrtb_ext.BidderVrtcal, vrtcal.NewVrtcalSyncer)
 	insertIntoMap(cfg, syncers, openrtb_ext.BidderYieldmo, yieldmo.NewYieldmoSyncer)
+	insertIntoMap(cfg, syncers, openrtb_ext.BidderZeroClickFraud, zeroclickfraud.NewZeroClickFraudSyncer)
 
 	return syncers
 }
diff --git a/usersync/usersyncers/syncer_test.go b/usersync/usersyncers/syncer_test.go
index dc224fe99bf..cc6d4b5870a 100644
--- a/usersync/usersyncers/syncer_test.go
+++ b/usersync/usersyncers/syncer_test.go
@@ -63,6 +63,7 @@ func TestNewSyncerMap(t *testing.T) {
 			string(openrtb_ext.BidderVisx):             syncConfig,
 			string(openrtb_ext.BidderVrtcal):           syncConfig,
 			string(openrtb_ext.BidderYieldmo):          syncConfig,
+			string(openrtb_ext.BidderZeroClickFraud):   syncConfig,
 		},
 	}