We study orthogonality preserving operators between C ∗ -algebras, JB ∗ -algebras and JB ∗ -triples. Let T : A → E be an orthogonality preserving bounded linear operator from a C ∗ -algebra to a JB ∗ -triple satisfying that T ∗ ∗ ( 1 ) = d is a von Neumann regular element. Then T ( A ) ⊆ E 2 ∗ ∗ ( r ( d ) ) , every element in T ( A ) and d operator commute in the JB ∗ -algebra E 2 ∗ ∗ ( r ( d ) ) , and there exists a triple homomorphism S : A → E 2 ∗ ∗ ( r ( d ) ) , such that T = L ( d , r ( d ) ) S , where r ( d ) denotes the range tripotent of d in E ∗ ∗ . An analogous result for A being a JB ∗ -algebra is also obtained. When T : A → B is an operator between two C ∗ -algebras, we show that, denoting h = T ∗ ∗ ( 1 ) then, T orthogonality preserving if and only if there exists a triple homomorphism S : A → B ∗ ∗ satisfying h ∗ S ( z ) = S ( z ∗ ) ∗ h , h S ( z ∗ ) ∗ = S ( z ) h ∗ , and T ( z ) = L ( h , r ( h ) ) ( S ( z ) ) = 1 2 ( h r ( h ) ∗ S ( z ) + S ( z ) r ( h ) ∗ h ) . This allows us to prove that a bounded linear operator between two C ∗ -algebras is orthogonality preserving if and only if it preserves zero-triple-products.