NetFile
NetFile is a political compliance software company that assists with campaign disclosures.
Connect Anedot to NetFile
- Go to Settings > Integrations . Click + New Connection and select "NetFile."
- Select which Action Pages you would like to sync with NetFile (default: all Action Pages).
- Optionally, you can enter a comma separated list of Action Page IDs that you would like excluded from NetFile.
- Optionally, you can also scope the integration to only send team-specific data to NetFile (if no team is selected it will sync all Action Pages specified in the fields above).
- Enter your NetFile Username .
- Enter your NetFile Password .
- Enter your NetFIle Account Name .
- Optionally, Enter your Bank Account ID .
- Once you save the credentials, you are all set!
The Action Pages, Team, and credentials can be modified at any time post-setup.
Data Relays
-
We send relays for financial and non-financial pages.
-
Because NetFile requires that all relays occur within a “session” (similar to web browsing session) we send multiple relays for each submission.
- The first relay opens the session and returns a sessionID to use for the next 2 or 3 relays depending if a donation is included or not.
- The second relay sends the donor information using the session ID.
- (For donations) The third relay sends the donation information using the sessionID.
- The final relay then closes the session (invalidating that sessionID).
-
-
Push Unsent (failed donations, all donations) + date range for relays works for all Action Pages, regardless of page type.
-
If there are 5 failed relay attempts in a row, the integration is marked “inactive” and no longer attempts relays.
Please note: we don’t use/record any unique identifier on donors pertaining to Netfile.
-
The request we make is called an “upsert”. That is normally the equivalent of “find and update or create”.
-
We depend on NetFile’s upsert to find or create contributor records. If Netfile cannot “find” a record that does exist (e.g. some data out of sync), Netfile may create duplicate records.
- The “Merge Entities” data management function on NetFile may need to be used to eliminate duplicate contributor entries.
Data in NetFile
-
Find a gift by searching for contributions.
-
Search fields:
-
Search results:
-
-
Monetary record (financial transaction (donation)):
-
Non-monetary record (non-financial transaction (submission):
-
-
-
-
Field Mapping
Donor Fields
Note: The Anedot Fields match the Submission’s Raw Data and the NetFile Fields match the Request Body relay.
Anedot Field | NetFile Field |
---|---|
(Submission) id | Id |
suffix | Suffix |
“1” | Category |
employerName | Employer |
“1” | IdSource |
lastName | LastName |
firstName | FirstName |
phone | PhoneHome |
address postalCode | AddressZip |
occupation | Occupation |
address city | AddressCity |
address { line1} | AddressLine1 |
address { line2} | AddressLine2 |
address region | AddressState |
sessionId (from Relay 1 Response Body ) | SessionId |
Donation Fields
Note: The Anedot Fields match the Submission’s Raw Data and the NetFile Fields match the Request Body relay.
Anedot Field | NetFile Field |
---|---|
(Donation) id | Id |
amount (x100) | Amount |
(Submission) id | EntityId |
“1” | IdSource |
“YYYYMMDD” (Formatted date of relay) | BatchNumber |
(NetFile field saved in the integration drawer) | ElectionYear |
(NetFile field saved in the integration drawer) | ElectionCycle |
createdAt | DateDisclosure |
“1” | EntityIdSource |
“1” | TransactionType |
(NetFile field saved in the integration drawer) | BankAccountReference |
sessionId (from Relay 1 Response Body ) | SessionId |
Payload Data
Request Headers
`{``}`
Request Body 1 (Opens session)
`{``}`
Request Body 2 (Donor relay)
`{`
"Items": [`{`
"Id": "de5a291d4d67e4136b879",
"Email": "[[email protected]](/cdn-cgi/l/email-protection)",
"Suffix": null,
"Category": "1",
"Employer": null,
"IdSource": "1",
"LastName": "Dot",
"FirstName": "Annie",
"PhoneHome": "1231231234",
"AddressZip": null,
"Occupation": null,
"AddressCity": null,
"AddressLine1": null,
"AddressLine2": null,
"AddressState": null
`}`],
"SessionId": "aa7e376112be468b9daeb00300bd267b"
`}`
Request Body 3 (Donation relay)
`{`
"Items": [`{`
"Id": "d915925476d75c84e5e3a",
"Amount": 100.0,
"EntityId": "de5a291d4d67e4136b879",
"IdSource": "1",
"BatchNumber": "20230515",
"ElectionYear": null,
"ElectionCycle": null,
"DateDisclosure": "2023-05-15T14:32:01-04:00",
"EntityIdSource": "1",
"TransactionType": "1",
"BankAccountReference": ""
`}`],
"SessionId": "aad91731fbd64058b338b00300be189e"
`}`
Request Body 4 (Ends session)
`{`
"SessionId": "aa7e376112be468b9daeb00300bd267b"
`}`
Response Body 1 (Opens session)
`{`
"account": "ANEDOT",
"lockDate": null,
"userName": "PDIETZEL",
"sessionId": "aa7e376112be468b9daeb00300bd267b",
"futureDate": null,
"responseStatus": null
`}`
Response Body 2 (Donor relay)
`{`
"items": [`{`
"index": 0,
"action": "Update",
"netFileId": "366",
"submittedId": "de5a291d4d67e4136b879",
"errorMessage": null
`}`],
"failureCount": 0,
"successCount": 1,
"responseStatus": null
`}`
Response Body 3 (Donation relay)
`{`
"items": [`{`
"index": 0,
"action": "Insert",
"netFileId": "1586",
"submittedId": "d915925476d75c84e5e3a",
"errorMessage": null
`}`],
"failureCount": 0,
"successCount": 1,
"responseStatus": null
`}`
Response Body 4 (Ends session)
`{`
"responseStatus": null
`}`
Response Status (Success)
200
Response Status (Failure)
500
Related Articles
Blackbaud Raiser's Edge DonorPerfect Iterable Klaviyo MemberPress