Fundraising

This is the homepage for fundraising-tech documentation. If you can't find what you are looking from from here then take a look at our documentation plan and add the appropriate header & links.
Note that much of the content on this page should be moved to linked pages.
* If you want to understand what fr-tech does, who we are and how to contact us head over to mw:Fundraising tech
* There is some information on this page - Fundraising Software Development. - that needs to be migrated onto this main page
== External-facing ==
=== Payments ===
=== Mediawiki extensions===
The following Mediawiki extensions related to fundraising are installed on the payments wiki:
====DonationInterface====
Renders donation forms and handles donor interaction, redirecting donors to payment processors when necessary and then either presenting an error or redirecting to a thank you page.
Extension documentation on mediawiki.org
====FundraisingEmailUnsubscribe====
Allows a donor to unsubscribe from fundraising-related emails.
Extension documentation on mediawiki.org
==== Central Notice ====
Extension documentation on https://www.mediawiki.org/wiki/Extension:CentralNotice
==== Fundraiser Landing Page ====
Extension documentation on https://www.mediawiki.org/wiki/Extension:FundraiserLandingPage
=== Landing Check ===
Extension documentation on https://www.mediawiki.org/wiki/Extension:LandingCheck
===Public reporting===
We export some extremely aggregated datasets in CSV format at https://frdata.wikimedia.org/. They are generated every half hour by the public_data_export process-control job running the fundraiser_public_data_export and fundraiser_public_data_mover child jobs. 
fundraiser_public_data_export runs the FundraiserStatisticsGen/fundstatgen.py script from the tools repo, then fundraiser_public_data_mover just rsyncs the data to the frdata server.
legacy DonationForm - reusable frontend
=== Email Preference Center ===
=== CiviProxy ===
=== Donor Data Delivery Tool ===
== Internal-facing ==
=== CiviCRM ===
WMF fundraising uses CiviCRM to track donor data.
There is a guide to dealing with outages and upgrades.
=== End of year emails (EOY) ===
We manually send these in early January, summarising all donations for the year, broken into Endowment & Foundation. See technical details
=== Matching Gifts HEP Integration ===
We get data from HEP with information on companies that match donations. 
See the Deployment Instructions.
==Libraries==
===SmashPig===
==Service Providers==
Payment processors 
Acoustic
Fundraise Up
Minfraud
Maxmind geolocation
Currency rates
Employer matching gifts
Service Provider Name	Payment method 	Production URL 	SandBox URL 	Sandbox Accounts 	Test Cards
Adyen 	Credit cards, iDEAL 	https://ca-live.adyen.com/ 	https://ca-test.adyen.com/ 	Org email 	https://docs.adyen.com/development-resources/testing/test-card-numbers
Adyen 	Google Pay 	https://pay.google.com/business/console/home	 	Org email 	https://groups.google.com/g/googlepay-test-mode-stub-data
Adyen 	Apple Pay 	 	 	FR-Tech SandBox Accounts	
Ingenico 	Credit cards, iDEAL 	https://wpc.gcsip.com/wpc/login 	https://wpc.gcsip.nl/wpc/login 	Org email 	Ingenico Test Card (Google Sheets) https://epayments.developer-ingenico.com/payment-product/visa/testing
DLocal 	Credit cards, lots of local bank transfer options	https://dashboard.dlocal.com/ 	https://dashboard.dlocal.com/ 	Org email 	Any card number sequence is accepted, error response is tested using description
PayPal 	Paypal 	https://www.paypal.com/signin 	https://www.sandbox.paypal.com/ 	Config-Private 	Use FR tech account for testing
Braintree 	Paypal 	https://www.braintreegateway.com/login 	https://sandbox.braintreegateway.com/login	Config-Private 	Paypal - Use FR Tech Account for testing
Amazon 	 	 	 	 	
Acoustic 	 	https://login-campaign-us-4.goacoustic.com/ 	 	 	
==Cluster layout, deployment, codebases ==
=== Analytics ===
Jobs for analytics processing run on fran1001. The primary database server for analytics data is frdb1003. Jobs include:
* DjangoBannerStats, a legacy python codebase that ingresses data about banner impressions and Donate Wiki landing page impressions to the pgehres database. For details, see DjangoBannerStats documentation.
===Deployment===
===Staging server===
Civicrm Staging Server
Payments Staging Server
=== Redis ===
=== Grafana ===
=== Puppet ===
=== Upgrades ===
==Data and flow ==
=== Gateway Chooser ===
* Routes donors to the correct payment processor based on the country, currency, and payment method.
* Incoming links from donatewiki and banners hit this special page on paymentswiki rather than going directly to individual gateways
** This allows us to disable a gateway on paymentswiki and have traffic flow immediately to the backup
===Payment processors===
We have the ability to use several payment processors for online donations. Currently, we route most credit card donations to Adyen.
*Adyen - Main credit card processor, also has iDEAL, ApplePay, and GooglePay
*Amazon - A widget on our page, integrated using Login and Pay with Amazon.
*Braintree
*dLocal - A payment processor specializing in the local payment methods of South America and India
* Ingenico - Ingenico has the ability to handle payments from multiple international systems including: credit card, direct debit, real time bank transfer, eWallets and more. We're currently only using them for cards.
* PayPal
* Gravy
See also, Ways to Give for our recommended donation methods according to country.
===Instant Payment Notification (IPN) Listener===
===Email integration - Acoustic (Also known as Silverpop)===
Acoustic is the service we use to send out bulk emails. They are able to handle high volumes of emails and are responsible for managing server reputation to improve deliverability. Acoustic also provide tools for A-B testing to see which emails perform better. In order to be able to use our donor information from Acoustic we have a nightly upload job. We also re-import information from acoustic - for details go to Fundraising/Data and Integrated Processes/Acoustic Integration
Note that prior brandings of the Acoustic platform may still linger - ie Silverpop, WCM, Watson Campaign Manager, or sometimes just 'IBM'
=== SMS Integration (via Acoustic) ===
In 2024 we introduced SMS solicitation via the remind me later form. The process is described at Fundraising/Data and Integrated Processes/SMS
===Message queues===
===Stats Pipeline===
===Recurring===
===Monthly Convert===
Monthly convert is a pop up that appears after a one time donation asking if the donor would like to set up a recurring donation.
===Audits===
Audits are our way of checking the data at the payment processor with our data in civi. Depending on the payment processor we may also have IPNs to triple check the data. They also are how refunds and chargebacks get back to us.
===Fundraising/Data and flow/Transaction IDs===
So many different ways to identify transactions!
=== Fraud filtering ===
Refer to docs at https://collab.wikimedia.org/wiki/Fundraising/Engineering/Fraud
=== Fail mail ===
Fail mail refers to the emails received by fr-tech when proesses fall over. Diagnositic details are in the Failmail zoo
=== Geolocation ===
== Fundraising Tech Ops ==
* Help Docs
* Policy
* Procedures
==How we work (Team Processes)==
Fundraising Tech is a Scrum team. We use Phabricator to manage our backlog and we work in 2-week sprints. 
* Fundraising Tech Phabricator dashboard
* Fundraising Tech Definition of Done
===Fundraising Emergencies===
Fundraising Engineering Documentation has with system information and emergency response protocols. Or more specifically Shutting the pipeline down details how/when to disable banner campaigns or other fundraising/payment services. 
===Fundraising On-Call documentation===
See on-call documentation for instructions for on-call duty.
=== Feature / Bug Trackers===
There's loads of information about how fr-tech triages bugs at Fundraising/Bug Triaging
Not sure what to do next? See Fundraising Tech's Phabricator Workboard
===PCI Compliance===
Payment Card Industry rules we have to follow to keep accepting credit cards.
*How to fill out the annual PCI compliance form
Category:Fundraising
Category:Fundraising - Needs Updated
==Development Tools==
===Getting Started===
Local setup for cluster SSH access
===Docker===
*Fundraising-dev docker environment
Testing locally
===Gerrit===
===Gitlab===
===CI===
=== Testing ===
=== HTML Email Development (under construction) ===
=== Logdog ===
 Logdog helps you hunt through the logs.
=All Subpages=