The 23-year-old Rodriguez, who helped Colombia reach the quarterfinals in Brazil, passed a medical examination at the Sanitas Clinic in the northern suburb of La Moraleja.
"I'm very happy," Rodriguez said as he left the clinic. "Everything went well."
In the afternoon he was presented to thousands of cheering fans at the Santiago Bernabeu Stadium. Many wore Colombian national colours and waved flags.
Madrid president Florentino Perez welcomed the forward and referred to him as James - which he pronounced in the Spanish style as ha-mes - Rodriguez.
Perez said the late Madrid great and honorary president Alfredo Di Stefano had also come to the club from Colombia, where he had been playing before his arrival in Spain.
"Colombia will be at your side," said Perez, raising a loud cheer from fans in the stadium.
Rodriguez said: "I hope to win many titles here, Hala Madrid," invoking the club's chant.
Spanish sports newspapers Marca and As both reported that Madrid had agreed to pay French club Monaco 80 million euros ($108 million) for Rodriguez. He is expected to join the squad on Aug. 1.
Rodriguez's goal against Uruguay in the second round of the World Cup, when he chested the ball down and then volleyed it in, was voted the best goal of the tournament.
"I think they (Madrid) were interested in me before my goal against Uruguay," Rodriguez said. "But by scoring that goal I enhanced my chances of coming here."
Rodriguez will strengthen Madrid's attacking lineup, joining Cristiano Ronaldo, Gareth Bale and Karim Benzema up front.
The forward said he was aware of Madrid's strength in depth, adding that he was ready to play in different positions if required to do so by the coach.
"I just want to train hard and be in good condition for when I am called upon to play," he said.
The Colombia forward will wear the No. 10 shirt, vacated when Mesut Ozil left Madrid for Arsenal. The shirt is inscribed with just "James" above the number.
Asked if he had heard rumours that fellow countryman Radamel Falcao might also be headed for Madrid, Rodriguez said Falcao is a great player. "But it is not in my competence to talk about such things."
Rodriguez, who joined Monaco from Porto last year, is Madrid's second signing ahead of the new season after Germany midfielder Toni Kroos joined Thursday from Bayern Munich.