diff --git a/ConsentViewController/Classes/SPCampaigns.swift b/ConsentViewController/Classes/SPCampaigns.swift
index 5ca002ec7..e73ec93ff 100644
--- a/ConsentViewController/Classes/SPCampaigns.swift
+++ b/ConsentViewController/Classes/SPCampaigns.swift
@@ -12,14 +12,11 @@ public typealias SPTargetingParams = [String: String]
 
 /// Contains information about the property/campaign.
 @objcMembers public class SPCampaign: NSObject {
-    let environment: SPCampaignEnv
     let targetingParams: SPTargetingParams
 
     public init(
-        environment: SPCampaignEnv = .Public,
         targetingParams: SPTargetingParams = [:]
     ) {
-        self.environment = environment
         self.targetingParams = targetingParams
     }
 }
diff --git a/ConsentViewController/Classes/SPConsentManager.swift b/ConsentViewController/Classes/SPConsentManager.swift
index 218caba81..260e40e25 100644
--- a/ConsentViewController/Classes/SPConsentManager.swift
+++ b/ConsentViewController/Classes/SPConsentManager.swift
@@ -46,13 +46,14 @@ import Foundation
         }
     }
 
-    public convenience init(accountId: Int, propertyName: SPPropertyName, campaigns: SPCampaigns, delegate: SPDelegate?) {
+    public convenience init(accountId: Int, propertyName: SPPropertyName, campaignsEnv: SPCampaignEnv = .Public, campaigns: SPCampaigns, delegate: SPDelegate?) {
         self.init(
             accountId: accountId,
             propertyName: propertyName,
+            campaignsEnv: campaignsEnv,
             campaigns: campaigns,
             delegate: delegate,
-            spClient: SourcePointClient(accountId: accountId, propertyName: propertyName, timeout: SPConsentManager.DefaultTimeout),
+            spClient: SourcePointClient(accountId: accountId, propertyName: propertyName, campaignEnv: campaignsEnv, timeout: SPConsentManager.DefaultTimeout),
             storage: SPUserDefaults(storage: UserDefaults.standard)
         )
     }
@@ -60,6 +61,7 @@ import Foundation
     init(
         accountId: Int,
         propertyName: SPPropertyName,
+        campaignsEnv: SPCampaignEnv,
         campaigns: SPCampaigns,
         delegate: SPDelegate?,
         spClient: SourcePointProtocol,
diff --git a/ConsentViewController/Classes/SourcePointClient/MessageRequest.swift b/ConsentViewController/Classes/SourcePointClient/MessageRequest.swift
index ec92e3847..3b60386eb 100644
--- a/ConsentViewController/Classes/SourcePointClient/MessageRequest.swift
+++ b/ConsentViewController/Classes/SourcePointClient/MessageRequest.swift
@@ -8,7 +8,6 @@
 import Foundation
 
 struct CampaignRequest: Encodable, Equatable {
-    let campaignEnv: SPCampaignEnv
     let targetingParams: SPTargetingParams
 }
 
@@ -18,7 +17,6 @@ struct CampaignsRequest: Equatable, Encodable {
     static func spCampaignToRequest(_ campaign: SPCampaign?) -> CampaignRequest? {
         guard let campaign = campaign else { return nil }
         return CampaignRequest(
-            campaignEnv: campaign.environment,
             targetingParams: campaign.targetingParams
         )
     }
@@ -37,6 +35,7 @@ struct MessageRequest: Equatable, Encodable {
     let requestUUID: UUID
     let propertyHref: SPPropertyName
     let accountId: Int
+    let campaignEnv: SPCampaignEnv
     let idfaStatus: SPIDFAStatus
     let localState: SPJson
     let consentLanguage: SPMessageLanguage
diff --git a/ConsentViewController/Classes/SourcePointClient/SourcePointClient.swift b/ConsentViewController/Classes/SourcePointClient/SourcePointClient.swift
index 0d1437e56..cf23f412a 100644
--- a/ConsentViewController/Classes/SourcePointClient/SourcePointClient.swift
+++ b/ConsentViewController/Classes/SourcePointClient/SourcePointClient.swift
@@ -40,7 +40,7 @@ typealias ConsentHandler<T: Decodable & Equatable> = (Result<(SPJson, T), SPErro
 typealias CustomConsentHandler = (Result<CustomConsentResponse, SPError>) -> Void
 
 protocol SourcePointProtocol {
-    init(accountId: Int, propertyName: SPPropertyName, timeout: TimeInterval)
+    init(accountId: Int, propertyName: SPPropertyName, campaignEnv: SPCampaignEnv, timeout: TimeInterval)
 
     func getMessages(
         campaigns: SPCampaigns,
@@ -125,20 +125,23 @@ class SourcePointClient: SourcePointProtocol {
 
     let accountId: Int
     let propertyName: SPPropertyName
+    let campaignEnv: SPCampaignEnv
     var client: HttpClient
 
     let requestUUID = UUID()
 
-    init(accountId: Int, propertyName: SPPropertyName, client: HttpClient) {
+    init(accountId: Int, propertyName: SPPropertyName, campaignEnv: SPCampaignEnv, client: HttpClient) {
         self.accountId = accountId
         self.propertyName = propertyName
+        self.campaignEnv = campaignEnv
         self.client = client
     }
 
-    required convenience init(accountId: Int, propertyName: SPPropertyName, timeout: TimeInterval) {
+    required convenience init(accountId: Int, propertyName: SPPropertyName, campaignEnv: SPCampaignEnv, timeout: TimeInterval) {
         self.init(
             accountId: accountId,
             propertyName: propertyName,
+            campaignEnv: campaignEnv,
             client: SimpleClient(timeoutAfter: timeout))
     }
 
@@ -158,6 +161,7 @@ class SourcePointClient: SourcePointProtocol {
             requestUUID: requestUUID,
             propertyHref: propertyName,
             accountId: accountId,
+            campaignEnv: campaignEnv,
             idfaStatus: idfaStaus,
             localState: localState,
             consentLanguage: consentLanguage,